Если у вас индексируеются внутренние адреса страниц и со слешем и без него («/») в конце, т.е. например:
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]