Почему в WP при переходе по ссылке с Get параметром выходит 404?

Ссылка скопирована
1 ответ

В WP создана страница с урлом mysite.ru/novosti/novost/
для этой страницы имеется кастомный шаблон.
При переходе на эту страницу с гет параметром
mysite.ru/novosti/novost/?news=14
вылезает 404 ошибка.

Если без, то страница грузится

Дополнительно:

Ответы:

Всё из-за записи в .htaccess которую в новых версиях WP вставляют в этот файл
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Артём Dev Ответ

GET-параметр сам по себе не должен превращать существующую страницу WordPress в 404. Если /novosti/novost/ открывается, а /novosti/novost/?news=14 даёт 404, значит параметр news где-то перехватывается: темой, плагином, rewrite-правилом, security-модулем или кастомным запросом.

Сначала проверьте, не зарегистрирован ли news как query var или rewrite endpoint. Попробуйте другой параметр:

/novosti/novost/?my_news_id=14

/novosti/novost/?my_news_id=14

Если с другим параметром всё работает, конфликт именно с именем news. Тогда переименуйте параметр или зарегистрируйте его корректно:

add_filter('query_vars', function ($vars) {
    $vars[] = 'news_id';
    return $vars;
});

add_filter('query_vars', function ($vars) { $vars[] = 'news_id'; return $vars; });

В шаблоне получайте значение безопасно:

$news_id = isset($_GET['news_id']) ? absint($_GET['news_id']) : 0;

$news_id = isset($_GET['news_id']) ? absint($_GET['news_id']) : 0;

Правило RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] обычно не должно ломать GET-параметры. Оно передаёт заголовок Authorization и часто добавляется WordPress для REST/API. Если после его удаления проблема исчезает, значит на сервере есть более широкий конфликт в .htaccess, но это не типичная причина.

Также отключите на время плагины безопасности и кэша. Некоторые WAF-правила могут считать параметр подозрительным и отдавать 404 вместо 403. Финально лучше использовать уникальные имена параметров с префиксом проекта, например wturm_news_id, чтобы не конфликтовать с WordPress и плагинами.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно