Отключить автозаполнение Wordpress

15

Недавно я заметил, что Wordpress пытается автоматически заполнить URL-адрес, когда он не представлен полностью. Например, у меня есть URL поста, который выглядит так:

http://www.mysite.com/some-post-title

Если я перейду к следующему URL:

http://www.mysite.com/some-post-ti

Я вижу, что URL-адрес передается в Wordpress, но Wordpress выполняет редирект 301 http://www.mysite.com/some-post-title.

Как я могу отключить это поведение?

Люк
источник
Испытуемый раствор , который не отключает всю каноническую систему URL , но только отключает автозаполнения «угадайку» часть изложена здесь
Хок Р.

Ответы:

19

Я считаю, что это redirect_canonicalфункция, к которой подключен template_redirect. Вы должны иметь возможность отключить его с помощью:

remove_filter('template_redirect', 'redirect_canonical'); 

Но вы должны подумать о том, хотите ли вы сделать это, поскольку это довольно сложно и выполняет некоторые важные функции SEO:

Перенаправляет входящие ссылки на правильный URL-адрес на основе URL-адреса сайта.

Поисковые системы считают www.somedomain.com и somedomain.com двумя разными URL-адресами, когда они оба находятся в одном месте. Это усовершенствование SEO предотвращает штраф за дублирующийся контент, перенаправляя все входящие ссылки на одну или другую.

Предотвращает перенаправление каналов, обратных ссылок, поисков, всплывающих комментариев и URL-адресов администраторов. Не перенаправляет на IIS 7, не поддерживающий довольно постоянную ссылку, предварительный просмотр страниц / постов, WP admin, Trackbacks, robots.txt, поиски или запросы POST.

Также будет пытаться найти правильную ссылку, когда пользователь вводит несуществующий URL-адрес на основе точного запроса WordPress. Вместо этого будет пытаться проанализировать URL-адрес или запрос, пытаясь определить правильную страницу, чтобы перейти.

http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/canonical.php#L13

Следующее может убить автозаполнение, не связываясь с компонентом SEO, но я не могу этого обещать. Код едва протестирован, так как я никогда не хотел его отключать. Мне действительно нужно учиться, redirect_canonicalчтобы быть уверенным в чем-либо.

function kill_404_redirect_wpse_92103() {
  if (is_404()) {
   add_action('redirect_canonical','__return_false');
  }
}
add_action('template_redirect','kill_404_redirect_wpse_92103',1);
s_ha_dum
источник
Я добавил этот фрагмент кода в конец моего файла /wp-includes/canonical.php, и перенаправления все еще происходят. Я делаю что-то неправильно? Кто-нибудь еще не может отключить это поведение?
user1380540
3

Это кажется ужасно безответственным, чтобы это «угадывание» происходило автоматически. Я был бы гораздо более открыт для этого, если бы были какие-то средства определения, на какую страницу перейти.

У меня есть многочисленные страницы, которые построены как последовательность, и это автоматическое угадывание неправильно выбирает, чтобы отвечать страницами, которые (случайно?) Где-то в последовательности, в отличие от начальной страницы.

ОБНОВЛЕНИЕ: Это известное поведение, и рассматривается здесь: https://core.trac.wordpress.org/ticket/16557

FitPM
источник
1

В ответ на ответ FitPM - был создан плагин, который отключает режим автоматического угадывания.

Он отлично работает для меня на Wordpress 4.8 по состоянию на 2 августа 2017 года. Плагин находится здесь: https://wordpress.org/plugins/disable-url-autocorrect-guessing/

wrydere
источник