2016-11-06 3 views
0

Использования mod_rewrite, как это:Удалить последний слеш после имени хоста

RewriteBase/
RewriteCond %{HTTP_HOST} (.*) 
RewriteCond %{REQUEST_URI} /$ [NC] 
RewriteRule ^(.*)(/)$ $1 [L,R=301] 

я могу удалить последний слеш в ссылках, как example.com/foo/ Но ваты, если я хочу, чтобы удалить этот последний слеш в example.com/ используемые ранее правила не работают. То же самое в этом примере: Если я хочу, чтобы удалить 2 слэши

RewriteBase/
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ 
RewriteRule . %1/%2 [R=301,L] 

работает нормально, если ссылка Somthing как example.com/foo//bar Но если ссылка example.com//foo/bar правило не работает.

+0

черта после имени хоста важна, поскольку она представляет ваш корневой/общедоступный каталог документа. Его нельзя опустить. – starkeen

+0

Спасибо starkeen. Но тогда можно было бы сделать это в таких ситуациях: example.com//foo/bar. Как сделать из этих 2 // только один /. –

+0

Если вы хотите удалить несколько косых черт с вашего URL-адреса, например: ** example.com // foo/bar **, вы можете использовать: 'RewriteEngine on RewriteRule ^/+ (. *) $/$ 1 [L, R] ' – starkeen

ответ

0

вы можете:

RewriteBase/
RewriteCond %{REQUEST_URI} ^(//)?(.*)//(.*)$ 
RewriteRule . %1/%2 [R=301,L] 

Вы можете добавить /? к состоянию. Я не могу проверить прямо сейчас, но, возможно, работает.

+0

Mork, пожалуйста, хорошо прочитайте вопрос. Нет дубликатов. Ваш ответ по-прежнему работает, как мои правила. –

+0

Я спрашиваю про трясущую косую черту сразу после имени хоста (example.com/). Все остальные косые черты удаляются по правилам My и Mork. –

+0

измененный ответ, может быть, добавить (//)? – Mork

Смежные вопросы