Интересная задача, не столько практического свойства, сколько исследовательская.
Наводил на собственном сайте порядок, после больших изменений. И увидел адреса, которых физически на сайте нет. Но, вместо страницы 404, ВордПресс их отдаёт как 200. Вид у адресов был такой:
https://www.example.com/page/11/?area=1&p=news&new...
https://www.example.com/page/11/?showfile=1&fid=55...
https://www.example.com/page/11/?p=user&id=229&area=1
https://www.example.com/page/11/?type=interview&ar...
https://www.example.com/page/11/?p=contact&area=1
https://www.example.com/page/11/?p=misc&do=autowor...
Всё, что после заключительного слеша, генерировалось когда-то первым ПО сайта, 15 лет назад. Откуда появилось сейчас — история отдельная, речь не об этом.
Запрет в robots.txt не рассматривал, потому что этих адресов быть не должно вообще. Значит, нужна директива в .htaccess. Три дня читал сеть, применял различные варианты, всё заканчивалось циклическим редиректом. Отключение плагинов и включение дефолтных URL не помогало.
В конечном итоге, вчера была изобретена верная директива, но пока только для страниц пагинации, вида: /page/11/
Далее, я проверил все комбинации адресов, на дублирование. Выяснилось следующее.
1. Лента публикаций
https://www.example.com/kak-snegovik-v-adu/59030
Запрос с любыми цифрами после заключительного слеша возвращает 301, далее 200:
https://www.example.com/kak-snegovik-v-adu/59030/
https://www.example.com/KAK-SNEGOVIK-V-ADU/
Запрос с ПРОПИСНЫМИ символами в адресе сразу возвращает 200.
2. Статьи
https://www.example.com/stories/russian-poetry/07
— статус 301 и редирект на —
https://www.example.com/stories/russian-poetry/7/
Любые цифры дают ответ 200, хотя обрабатываются по разному.
https://www.example.com/STORIES/russian-poetry/ — 200
https://www.example.com/stories/RUSSIAN-POETRY/ — 200
Запрос с ПРОПИСНЫМИ символами в любой части адреса, кроме домена, тоже срабатывает.
https://www.example.com/russian-poetry/stories/ — меняем порядок вложенности, получаем 301 на адрес
https://www.example.com/stories/
3. Форматы публикаций
https://www.example.com/type/image/ — всё обрабатывается так, как надо. В том числе, корректно режутся множественные слеши. Удивительно.
4. Страницы вложений
https://example.com/wp-content/uploads/2015/11/201... — неожиданный результат. Убираем www и получаем ответ 200. Для всех остальных типов публикаций срабатывает корректный редирект на основной адрес, с www.
https://www.example.com/wp-content///////uploads//... — тоже странность. Везде множественные слеши режутся, кроме адресов вложений.
Теперь, собственно вопрос: каким образом всё это исправить?
При условии, что хостинг виртуальный и доступа к настройкам сервера нет. Можем использовать только .htaccess. Править код ВордПресс крайне нежелательно, чтобы не подпрыгивать при каждом обновлении.
И да, я в курсе, что часть перечисленного можно устранить при помощи плагинов (например, капслок), но хочется выработать комплексное решение. Тем более, что приведённую схему урлов я проверил на нескольких сайтах — проблемы аналогичные.