Назад | Перейти на главную страницу

htaccess и завершающий слэш

Попытка добавить конечную косую черту ко всем URL. Вот код:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.xml$
RewriteRule ^(.*[^/])$ $1/ [R=301,L]

Работает НО. При посещении http://www.example.com// вы получите копию индексной страницы. Это не очень хорошо для SEO. тем не мение http://www.example.com/articles// перенаправляет штраф на http://www.example.com/articles/ Как бороться с двойным слешем в индексе? Нужна помощь!

Попробуй это:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
...
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [R=301,L]

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

РЕДАКТИРОВАТЬ:

нашел этот и проверил, что это работает:

RewriteCond %{HTTP_HOST} !=""
RewriteCond %{THE_REQUEST} ^[A-Z]+\s//+(.*)\sHTTP/[0-9.]+$ [OR]
RewriteCond %{THE_REQUEST} ^[A-Z]+\s(.*/)/+\sHTTP/[0-9.]+$
RewriteRule .* http://%{HTTP_HOST}/%1 [R=301,L]

Это должно делать то, что вы пытаетесь ...