Главная > Web > htaccess: Дубли страниц с несколькими слешами подряд в URL

htaccess: Дубли страниц с несколькими слешами подряд в URL

Усовершенствованный вариант: https://krylov.org.ua/htaccess-dubli-stranits-s-neskolkimi-slesham-2/

Необходимо настроить 301 редирект со всех страниц, где в теле URL больше одного слеша подряд (за исключением http:// и знаков «/» в конце URL) на аналогичные URL с одним знаком «/».
Также необходимо настроить 301 редирект со всех страниц, где в конце URL присутствует знак «/» на аналогичные URL без знака «/».

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
Categories: Web Tags:
  1. Konstantin Krylov
    19 января,2017 в 22:34 | #1

    @Евгений
    Добрый день, Евгений!
    Как вариант на php:

    $e=explode('/',$_SERVER['REQUEST_URI']);
    if($e[1]==$e[2]){
    	header("Location: http://".$_SERVER['HTTP_HOST'].'/'.$e[1].'/',true,301);
    	exit();
    }

    В robots.txt мне кажется не получится закрыть.. но при 301 редиректе они из индекса уйдут и так.
    Странно это, проверил у себя, wordpress редиректит на правильный url сам…

  2. Евгений
    19 января,2017 в 10:19 | #2

    Добрый день, Константин!

    Прочел Ваши две статьи и у меня появился вопрос. У меня следующая проблема, WordPress плодит следующие дубли:

    http://site/правильный-url — нормальная страница
    http://site/правильный-url/дубль-правильного-url — дубль страницы

    Как можно сделать, чтобы все страницы после второго слеша редиректились на правильный URL и как закрыть их в robots.txt правильно. Спасибо !

  3. Konstantin Krylov
  4. Гость
    11 января,2017 в 05:03 | #4

    Криво работает скрипт при многочисленных слешах.

Похожие публикации