2010-06-21 2 views
0

Я использую mod_rewrite/.htaccess для симпатичных URL-адресов.mod_rewrite: удалить трейлинг-косую черту (только один!)

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

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} !^\.localhost$ [NC] 
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

Хорошо работает до сих пор. Только недостаток:
он также переадресовывает «множественный трейлинг-косая черта» -URLs до URL-адреса без трейлинга-косая черта.

Пример:
http://example.tld/foo/bar////// вперед к http://example.tld/foo/bar
в то время как я только хочу http://example.tld/foo/bar/ направить http://example.tld/foo/bar.

Итак, можно ли исключить только следы слэшей, если на самом деле это только один trailing slash?

Извините, если это несколько досадный или странный вопрос!

Спасибо.

+0

почему снова задают тот же вопрос? http://stackoverflow.com/questions/3068091/mod-rewrite-remove-trailing-slash-only-one – unbeli

ответ

0

Попробуйте эту модель пожалуйста

^(. + [^ /])/$ Вместо^(. +)/$

+0

Не работает, никакой разницы. – user367217

+0

Я полагаю, это из-за петли. Попробуйте установить параметр maxredirect. Подробнее см. Ссылку. http://articles.sitepoint.com/print/mod_rewrite-no-endless-loops –

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