удаление косой черты из этого переписанного URL - PullRequest
1 голос
/ 27 февраля 2012

Я знаю, что это может звучать немного глупо, но другого способа решить это не существует.У меня проблема с косой чертой /.Я хочу удалить его из URL-адреса, потому что это создает путаницу в браузерах, предоставляющих доверенные или недоверенные URL-адреса.

Это код основного домена:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ /user [R=301,L]

и это результат вышеприведенного кода: https://www.mydomain.com/user/

но я хочу, чтобы URL перенаправил на это:

https://www.mydomain.com/user

Я также хочу удалитьпрямая косая черта от этого URL:

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(?:\.\w+|/)$
RewriteRule (.*) /$1/ [R,L]
RewriteCond %{REQUEST_URI} ^(/end)
RewriteRule ^(.*)$ /top/right/left/bottom/$1 [L]
RewriteCond %{REQUEST_URI} ^/top/right/left/bottom
RewriteRule top/right/left/bottom/(end)(/(./*))?$ $1$2 [R,L]

, и это результат вышеприведенного кода: https://www.mydomain.com/end/

, но я хочу, чтобы URL перенаправил на это:

https://www.mydomain.com/end

Последний вопрос: почему я должен написать www. по-своему в некоторых браузерах, таких как FF или chrome, чтобы перенаправление происходило на нужный URL?

Все комментарии приветствуются

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Похоже, что вышеперечисленные правила написаны мной.Так что оптимизируем его так, чтобы URL не заканчивался на / (https://www.mydomain.com/end)

Заменить целую (от RewriteCond %{ENV:REDIRECT_STATUS} 200 до RewriteRule top/right/left/bottom/(end)(/(./*))?$ $1$2 [R,L]) вещь следующим образом:

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

RewriteRule ^(end)(?:/(.*))? /top/right/left/bottom/$1/$2 [L]

RewriteRule ^top/right/left/bottom/(end)(/.*)?$ $1$2 [R,L]

Однако помните, что если вы используете прямую косую черту следующим образом: https://www.mydomain.com/end/ прямая косая черта не будет удалена.

Если вы хотите удалить /: замените последние 2 правила на эти:

RewriteRule ^(end)(?:/(.+))? /top/right/left/bottom/$1/$2 [L]

RewriteRule ^(end)/$ $1 [R,L]   
RewriteRule ^top/right/left/bottom/(end)(/.*)?$ $1$2 [R,L]
0 голосов
/ 27 февраля 2012

Сохраните URL-адрес в переменной и выполните rtrim, чтобы удалить косую черту

$redirectURL = rtrim($redirectURL, "/");
...