Загрузка страницы..
.htaccess Редирект. Как удалить несколько слешей в урле (URL)
Иногда «по случайности» в URL могут появится по несколько слешей в таких необходимо делать 301 редирект на страницу с одним слешем
2016-03-03T15:03 03 марта 2016 15:03
Просмотров: 3635

Иногда «по случайности» в 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>


Комментарии: 1

комментарий Михаил
Михаил
2016-03-18T11:0918 марта 2016 11:09
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]

Не будет работать с видом: site.ru///

Добавить комментарий

Яндекс.Метрика Яндекс.Метрик