Убрать повторяющиеся слеши одним редиректом htaccess
пытаюсь сделать редирект например с ура site.ru/// на site.ru Вставил в htaccess следующий код:
RewriteCond %{REQUEST_URI} ^(.*?)\/{2,}(.*?)$
RewriteRule . %1/%2 [L,R=301]
RewriteCond %{THE_REQUEST} //
RewriteRule .* /$0 [R=301,L]
И все бы хорошо, но вот только он делает сначала редирект с site.ru/// на site.ru//, затем с site.ru// на site.ru/ и уже потом site.ru/ на site.ru
Как сделать это одним редиректом?
Ответы (1 шт):
Проблема заключается в том, что редирект выполняется постепенно, удаляя один слэш за раз. Чтобы выполнить редирект сразу, замените ваш код в .htaccess на следующий:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s[^?]*//
RewriteRule ^(.+?)/{2,}(.*)$ $1/$2 [R=301,L]
вот что делает этот код:
RewriteEngine On включает модуль mod_rewrite.
RewriteCond %{THE_REQUEST} \s[^?]*// проверяет, есть ли двойной слэш или более в запрошенном URL.
RewriteRule ^(.+?)/{2,}(.*)$ $1/$2 [R=301,L] ищет двойной слэш или более в запрашиваемом пути и заменяет их одним слэшем, выполняя редирект с кодом 301 (Moved Permanently).