Intereting Posts
Получение комментариев для сообщений с использованием WP_Query () и пользовательского цикла? Динамическое изменение названия страницы из URL-адреса Как отображать сообщения из пользовательского типа сообщений на странице category.php? Почему я не могу войти в систему после перехода на www? Нет визуального редактора в WordPress – пустой экран Как экспортировать и импортировать таксономии (категория, тег и / или пользовательская таксономия) и их условия Определить максимальное количество изменений для типа публикации? вставить запрос в пользовательскую таблицу с помощью ajax с плагином jQuery Jeditable Какой URL-адрес в белом списке прокси для обновления? Проверьте, есть ли сообщение в прямом эфире перед отображением содержимого лучший поиск? Shortcode не принимает atts Пользовательские поля подергиваются / дрожат на странице администратора Обновление плагина из личного API плагин перезаписывает файл другого плагина-.php

Почему WordPress не может обрабатывать site.com/%postname%/someword? Дает 404

Я заметил, что получаю преимущество, используя /%post_id%/%postname% так как любая ошибка и т. Д. После того, как sitename.com/123/wrong-words?some=params&etc=etc перенаправляется на правильный пост.

Но для sitename.com/123/correct-full-postname/somemistakeword генерируется 404.

Почему WordPress не способен справиться с этим /somemistakeword ? или почему слово перенаправления при добавлении / к части postname url .

В любом случае, чтобы исправить это?

Изменить : это похоже на значение по умолчанию во всех тестируемых установках WordPress.

Все после ? считается частью строки запроса. Все до ? является частью довольно постоянных ссылок, а также переписывает правила.

Правила перезаписи затем обрабатываются для генерации переменных запроса. Затем они включаются в запрос (который управляет основным циклом), и шаблон загружается на основе этого запроса.

Параметры, которые появляются после ? в URL-адресе можно использовать для добавления новых запросов или просто переменных GET.

Так sitename.com/123/wrong-words?some=params&etc=etc на самом деле просто sitename.com/123/wrong-words насколько это касается системы правил перезаписи. Правила перезаписи также основаны на регулярных выражениях, а регулярное выражение, используемое для соответствия сообщению в блоге, зависит от того, как настроены ваши довольно постоянные ссылки.

Из-за этого одни и те же данные извлекаются из sitename.com/123/correct-full-postname и sitename.com/123/correct-full-postname/somemistakeword/ , и поскольку единственное отличие – это косая черта, они считаются эквивалент. Некоторая обработка URL-адреса также может иметь место, и существует каноническая процедура перенаправления URL-адресов, которая является довольно сложной и большой по охвату в WP Core.

Что касается причины, почему sitename.com/123/correct-full-postname/somemistakeword не перенаправляется на sitename.com/123/correct-full-postname , это связано с тем, что они не совпадают, нет записи в sitename.com/123/correct-full-postname/somemistakeword . Существуют правила перезаписи, которые будут забирать sitename.com/123/correct-full-postname/2 aka page 2 этого сообщения и другие конкретные конечные точки, такие как sitename.com/123/correct-full-postname/feed т. Д.

Но если бы мы реализовали такую ​​функцию, это было бы не так просто, например, что произойдет, если мы посетим эту страницу:

sitename.com/parentpage/childpage

Будет ли это:

  • Показать дочернюю страницу
  • Перенаправить вас на родительскую страницу
  • 404

В качестве опоры у меня есть сообщение в блоге:

http://tomjn.com/2015/05/07/escaping-the-unsecure/

Если я удаляю конечную косую черту, она перенаправляется на версию с завершающей косой чертой. Если я добавляю случайные символы до конца, я получаю 404, как ожидалось

Я не могу сказать точно, не видя всех ваших текущих правил перезаписи, но вы можете проверить их со следующим плагином: (работая для меня в 4.2.2)

https://wordpress.org/plugins/monkeyman-rewrite-analyzer/

Мое лучшее предположение заключается в том, что ваши правила перезаписи инструктируют WordPress искать страницу с именем «somemistakeword», которая не существует. Анализатор перезаписи даст вам представление о том, что действительно видит WordPress.

Вы можете добавить новые правила перезаписи для покрытия вашего варианта использования. https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

Там может быть плагин или два, которые делают это проще.

Надеюсь, это поможет.