Убрать дублирующиеся слэши в середине url средствами mod_rewrite

Рейтинг: 1Ответов: 1Опубликовано: 12.04.2015

Нужно убрать лишние слэши в ссылках вида:

http://site.ru////page
http://site.ru////page////catalog
http://site.ru////page////

c последним справляется

RewriteRule (.+)/$ /$1 [L,R=301]

А как быть с остальными?

Пытался использовать то, что предлагалось в похожих темах, но никак не реагирует

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]

UPD

RewriteCond %{THE_REQUEST} \s/+(.*?)/{2,}([^\s]*)
RewriteRule ^ %1/%2 [R=302,L,NE]

RewriteRule (.+)/$ /$1 [L,R=301]

разбирает всё кроме

http://site.ru////

как быть?

Ответы

▲ 2Принят

Вы решаете проблему не с того конца. Начнём с ключевого вопроса: откуда такие ссылки берутся?

Если источник "некрасивых" ссылок — ваш сайт, то в первую очередь нужно исправить ваш сайт.

Если источник "некрасивых" ссылок — другие сайты, то их должно быть пренебрежимо мало. Большинство людей будет при ссылке на ваш сайт использовать адреса, которые выдаёт ваш сайт, а не выдумывать что-то самостоятельно и расставлять слэши от балды.

Для поиска источников ссылок можете воспользоваться разнообразными средствами аналитики: Google Webmaster, Google Analytics, Яндекс.Вебмастер, Яндекс.Метрика и др.


Теперь, когда источника ссылок больше нет, может оказаться, что поисковики всё ещё используют "некрасивые" ссылки. Если вас это беспокоит, то указывайте на каждой странице канонический адрес.

Для этого вы можете воспользоваться <link rel='canonical'>, картами сайта, редиректами и т.п. В большинстве случаев поисковики справляются с обнаружением дулблированного контента на сайте и воспринимают дубли как одну страницу, а из доступных URLов выбирают самый "красивый", поэтому можете не заморачиваться.

См. Use canonical URLs (Канонические URL).


.htaccess — это сложный и неудобный инструмент. В него можно внести несколько правил, но, чем сложнее правила, тем менее читаемым становится код. Если вы упираетесь в возможности .htaccess, то перенесите весь роутинг в скрипты и не мучайтесь.