Если у вас индексируеются внутренние адреса страниц и со слешем и без него («/») в конце, т.е. например:

www.site.ru/catalog/
и
www.site.ru/catalog

то поможет исправить ситуацию следующий код для .htaccess:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

UPD: вариант выше на одном из моих сайтов не сработал. Повозившись, нашел на форуме другой вариант, который приводился для какого-то движка:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) http://www.site.ru/$1/ [R=301,L]

Этот вариант заработал как надо.

UPD2: Нашел еще варианты:

#убираем слэш в конце

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

#добавляем слэш в конце

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

Комментарии

2 комментариев to “301 редирект со слешем и без него в конце URL”

  1. Леонид on Август 19th, 2011 11:02

    Проблемка получается в том, что не только каталоги становятся со слешем, но и ссылки вила /online-tv/india/12817-tamil-movies.html/

    Подскажите плиз как исправить?

    Спасибо

  2. Автор блога on Ноябрь 21st, 2011 23:05

    Второй вариант пробовали? Который в посте после UPD