htaccess видаляємо декілька слешів з url

Бувають випакди коли в урлку попадають декілька слешів підряд. Для прикладу http://funivan.com/// хз від кого це залежить, але найчастіше з цією проблемою стикаються сайти, які написані на безкоштовних двіжках (наприклад на двіжку opencart)

Як вирішити цю проблему за допомогою правил у файлі .htaccess

Ось кусок коду, який потрібно вставити у .htaccess

 

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

 

Це самий класний спосіб, так як він заміняє два і більше слешів у будь якій частині урл і перенаправляє користувача на нормальну урлку.

 

Перевага такого метода у тому, що у вас не буде дублів сторінок.

 

Недолік - користувача буде кидати по 2 рази. Тобто якщо у вас генеряться такі посилання, краще від них позбутись.

Є ще один цікавий глюк. Це видалення двох слешів в кікнці домену. Нажаль не вдалось в інтернеті знайти рішення цієї проблеми через htaccess тому пропоную самий банальний спосіб - php

if ( preg_match('!/{2,}!', $_SERVER['REQUEST_URI']) ){
  $uri = preg_replace('!/{2,}!', '/', $_SERVER['REQUEST_URI']);
  header('Location: ' . $uri, false, 301);
  die();
} 

Добавляємо його у файл index.php (скоріш за все) і все, проблеми з пошуковими системами закінчуються.

Висновок:

 

- правильно будуйте посилання.