shinkareff
@shinkareff
Руковожу проектами и людьми.

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

Интересная задача, не столько практического свойства, сколько исследовательская.

Наводил на собственном сайте порядок, после больших изменений. И увидел адреса, которых физически на сайте нет. Но, вместо страницы 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. Править код ВордПресс крайне нежелательно, чтобы не подпрыгивать при каждом обновлении.

И да, я в курсе, что часть перечисленного можно устранить при помощи плагинов (например, капслок), но хочется выработать комплексное решение. Тем более, что приведённую схему урлов я проверил на нескольких сайтах — проблемы аналогичные.
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
такие адреса есть у всех CMS порой до 5 на одну страницу ;)
И так что можно сделать
1. риал каноникал на всем сайте на текущую страницу без гет параметра. В идиале делайте првоерку во время генерации если страница с нормальным чпу то риал не ставите, если есть гет, тов дом добавляйте риал на страничку без гет.
2. все остальные редиректы я уже описывал тут.
вам этого хватит.
https://klondike-studio.ru/standards/standartnyy-h...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы