Модератор
Юрій
(@yube)
если ввести адрес типа http://misite.com/? — и любые символы после (или же просто «?») — сайт не выдает ошибку 404
Так себя ведет большинство движков. И сайты без движков, кстати, тоже.
Ну, большинство или нет. Моя проблема заключается в том, что с левых сайтов на мой разместили пару ссылок, которые в итоге (слава Богу, конечно) открывают главную страницу. Но, меня это никак не греет.
При этом адрес страниц типа — /?route= и пошло поехало.
Хотелось бы понять, как эту беду можно закрыть. Пытался ставить всяческие плагины по редиректу, колдовать в htaceess.
А воз и ныне там (с)…
Модератор
Юрій
(@yube)
Если Вы не отключали вывод rel canonical, включенный по умолчанию в wordpress, то такие левые ссылки ни на что не влияют. Но если очень хочется, чтобы на несуществующие get-параметры движок отвечал 404-й ошибкой, я могу рассказать, как это можно сделать. На PHP, надеюсь, писать умеете?
Да, действительно отключал (возможно). Но и на php пишу. Так что буду признателен за помощь.
Модератор
Юрій
(@yube)
Я бы делал так (если бы вдруг приспичило)
Нужно найти все допустимые get-параметры. Полного списка в Кодексе не встречал (или не обратил внимания), но если память мне не изменяет, большинство (или даже все) параметры есть в /wp-includes/query.php. Создать из них массив. Добавить туда параметры, используемые плагинами и функционалом активной темы. Затем в цикле проверить вхождение в этот массив всех реально присутствующих в запросе параметров. Если есть «неопознанный», возвращать 404. Проверялку можно либо культурно оформить плгином и повесить, скажем, на хук init, либо рабоче-крестьянским способом вставить в корневой index.php.
Разумеется, при установке новых пплагинов и/или тем придется пополнять список, при деинсталляции — чистить.
Здорово! Спасибо за развернутый ответ, буду копошиться. 🙂