Возникают проблемы с добавлением «/» в конец URI - PullRequest
0 голосов
/ 21 марта 2011

Прямо сейчас у меня есть URL, который похож на

http://www.example.com/customer/login

Я хочу, чтобы URI всегда имел конечный след, потому что плохо использует перенаправления с ../, и если он не имееткосая черта все портит, если есть косая черта, она работает нормально.Я попытался посмотреть некоторые примеры в Интернете, но я не смог заставить что-либо работать, вот мой текущий файл .htaccess

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?rt=$1 [QSA] 

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Как насчет этого:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=302]
1 голос
/ 21 марта 2011

Анубхава получил базовый ответ, и я изменил его. Вам нужно отправить HTTP-перенаправление, чтобы браузер запросил URL с / в конце.

Чтобы объединиться с вашими существующими правилами переписывания, вы должны сделать:

RewriteEngine on

# First check it's not a file
RewriteCond %{REQUEST_FILENAME} !-f
# And it doesn't end in /
RewriteCond %{REQUEST_URI} !.*/$
# Send the redirect. I would do 301 (permanent) here
# the "L" means the rest of the rules are ignored for this request
RewriteRule ^(.*)$ $1/ [L,R=301]

# Now pass thru to your old ruleset URLs the slash-checker didn't catch
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?rt=$1 [QSA]
0 голосов
/ 21 марта 2011

Попробуйте использовать следующие правила

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?rt=$1 [QSA] 

#following rule checks if url is not ending with / and
#if not then redirected to url which is ending with /
RewriteCond %{REQUEST_URI} !.*/$
RewriteRule ^(.*)$  $1/ [R=302,L]
...