Рубрики: web - программирование

.htaccess Редирект. Как удалить несколько слешей в урле (URL)

10 200 просмотров
Иногда «по случайности» в URL могут появится по несколько слешей в таких необходимо делать 301 редирект на страницу с одним слешем
.htaccess Редирект. Как удалить несколько слешей в урле (URL)

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

Комментарии 2

Загрузка комментариев…