WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Как избавиться от технических дублей?

Подскажите правила для htaccess, чтобы убрать следующие дубли.

  1. В блоге случайно добавленные цифры в конце адреса, например:
    example.com/kak-snegovik-v-adu/59030 — приводят к дублированию.
    Запрос с любыми цифрами после заключительного слеша возвращает 301, далее 200:
    example.com/kak-snegovik-v-adu/59030/

  2. Тоже в блоге: example.com/KAK-SNEGOVIK-V-ADU/
    Запрос с ПРОПИСНЫМИ символами в адресе сразу возвращает 200.
    Должно быть: example.com/kak-snegovik-v-adu/

  3. В статьях, любые добавленные цифры дают ответ 200.
    example.com/stories/russian-poetry/07 — статус 301 и редирект на:
    example.com/stories/russian-poetry/7/

  4. Тоже в статьях, запрос с ПРОПИСНЫМИ символами в любой части адреса, кроме домена, тоже срабатывает.
    example.com/STORIES/russian-poetry/ — 200
    example.com/stories/RUSSIAN-POETRY/ — 200

  5. Тоже в статьях:
    example.com/russian-poetry/stories/
    — меняем порядок вложенности, получаем 301 на адрес:
    example.com/stories/

  6. Страницы вложений:
    example.com/wp-content///////uploads//... — тоже странность. Везде множественные слеши режутся, кроме адресов вложений (проще говоря, адресов картинок).

Теперь, собственно вопрос: каким образом всё это исправить?

При условии, что хостинг виртуальный и доступа к настройкам сервера нет. Можем использовать только .htaccess. Править код ВордПресс крайне нежелательно, чтобы не подпрыгивать при каждом обновлении.

И да, я в курсе, что часть перечисленного можно устранить при помощи плагинов (например, капслок), но хочется выработать комплексное решение. Тем более, что приведённую схему урлов я проверил на нескольких сайтах — проблемы аналогичные.

Заметки к вопросу:
shinkareff 25 Апр. 2020

Последняя задача решена. Только что прислали такой вариант:

RewriteCond %{THE_REQUEST} //
   # Проверяем, повторяется ли слеш (//) более двух раз.
RewriteCond %{QUERY_STRING} !http(s|)://
  # Убедимся что это не урл в  GET
RewriteRule .* /$0 [R=301,L]
   # Исключаем все лишние слеши.

Сработало.

0
shinkareff
24 апреля 2020
  • 1
    kolshix615 paxtoy.com

    попробуйте

    BBQ: Block Bad Queries

    там есть несколько проверок по урл связанные с ///////(что решено видел) и ++++ может что-то еще подойдет

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация