Иногда «по случайности» в URL могут появится по несколько слешей, например:
www.site.com/catalog////page-1.html.
В таких необходимо делать 301 редирект на страницу с одним слешем
www.site.com/catalog/page-1.html :
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L]
Аналогично, можно склеить в урле несколько дефисов в один: с
www.site.com/catalog/page—1.html на www.site.com/catalog/page-1.html:
RewriteCond %{REQUEST_URI} ^(.*)--(.*)$ RewriteRule . %1-%2 [R=301,L]
Если нужно избавиться от слешей вначале, то можно дописать этот код:
RewriteCond %{THE_REQUEST} ^[A-Z]+\s//+(.*)\sHTTP/[0-9.]+$ RewriteRule .* http://%{HTTP_HOST}/%1 [R=301,L]
Полный код в файле .htaccess:
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]+\s//+(.*)\sHTTP/[0-9.]+$ RewriteRule .* http://%{HTTP_HOST}/%1 [R=301,L] </ifModule>
RewriteRule . %1/%2 [R=301,L]
Не будет работать с видом: site.ru///