Як запобігти автоматичному перенаправленню?


16

У Wordpress є функція, згідно з якою вона автоматично переспрямовує ваші URL-адреси, якщо вона сприймає їх неправильно. Ось приклад: у мене названа сторінкаmy-page

Якщо я переходжу до:

www.mysite.com/something/my-page/

це відразу перенаправить мене на

www.mysite.com/my-page/

оскільки нічого не існує за першою URL-адресою.

Як я можу вимкнути цю функцію і замість цього просто отримати 404, якщо введено неправильну URL-адресу?


Якщо ви спостерігаєте за тим, що відбувається (через HttpFox або WireShark або аналогічний sniffer пакетів), ці сторінки переспрямовують зі статусом 301 - Постійно переміщуються - що є відповідною поведінкою. Це допомагає пошуковим системам оновлювати бази даних серед іншого, а перенаправлення допомагає користувачам знаходити сторінки. Це може вплинути на те, як WordPress обробляє речі, коли ви фактично пересуваєте сторінку або змінюєте постійну посилання, тому будьте обережні. У всякому разі, ваш вибір, але я не впевнений, що це гарна ідея.
s_ha_dum

Я знаю, що це добре, я розумію це. Однак у мене є конкретний випадок використання, коли мені така поведінка не потрібна. Я розробляю плагін, який обробляє переадресацію URL-адреси, і тому я хочу змінити таку поведінку.
Мазатек

Ось більш правильну відповідь: посилання
Бінод - GoFundMonica

Відповіді:


23

Це працювало для мене:

remove_action('template_redirect', 'redirect_canonical');

Чи можете ви керуватись мені тим, що це буде робити? що таке канонічне перенаправлення? я новачок у wordpress
Yatin Mistry

Ви просто врятували мені багато головних болів! Дякую ! :-D
Jenski

1
Чи немає ніде, де ми можемо побачити ці переспрямування, щоб ми могли їх видаляти по одному?
Шейн Джонс

Це чудово. Чи знаєте ви, чому wp-adminпісля використання цього може все-таки переадресовуватись?
Гезим

Детальне пояснення цього питання ви можете знайти на сайті dev4press.com/blog/wordpress/2015/…
ronnefeldt

5

Як запропонував Еш, ви можете вимкнути цю функцію, скориставшись таким кодом:

remove_action('template_redirect', 'redirect_canonical');

Переглядаючи функцію redirect_canonical в canonical.php, можливо, ви також можете змінити поведінку за допомогою власного фільтра.

В кінці функції redirect_canonical () є виклик для фільтрації остаточної відповіді:

$redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url );

Таким чином, ви можете написати власний фільтр, щоб змінити остаточне перенаправлення або повернути нульове значення, щоб зупинити перенаправлення на основі введення, вимкнувши таким чином функцію для певної URL-адреси чи підмножини URL-адрес.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.