Làm thế nào để ngăn chặn chuyển hướng tự động?


16

Wordpress có một tính năng theo đó nó sẽ tự động chuyển hướng các URL của bạn nếu nó cho phép chúng bị viết sai. Đây là một ví dụ: tôi có một trang được gọi làmy-page

Nếu tôi đi đến:

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

nó sẽ ngay lập tức chuyển hướng tôi đến

www.mysite.com/my-page/

như không có gì tồn tại ở URL đầu tiên.

Làm cách nào tôi có thể tắt tính năng này và thay vào đó chỉ nhận được 404 nếu URL không chính xác được nhập vào?


Nếu bạn xem những gì đang xảy ra (thông qua HttpFox hoặc WireShark hoặc trình thám thính gói tương tự), các trang đó sẽ chuyển hướng với Trạng thái 301-- Đã di chuyển vĩnh viễn-- đó là hành vi phù hợp. Nó giúp các công cụ tìm kiếm giữ cho cơ sở dữ liệu của họ được cập nhật trong số những thứ khác và chuyển hướng giúp người dùng tìm thấy các trang. Điều này có thể ảnh hưởng đến cách WordPress xử lý mọi thứ khi bạn thực sự di chuyển một trang hoặc thay đổi permalink, vì vậy hãy cẩn thận. Dù sao, sự lựa chọn của bạn nhưng tôi không chắc đó là một ý tưởng tốt.
s_ha_dum

Tôi biết đó là một điều tốt, tôi hiểu điều đó. Tuy nhiên, tôi có một trường hợp sử dụng cụ thể mà tôi không cần hành vi đó. Tôi đang phát triển một plugin xử lý chuyển hướng URL và vì vậy tôi muốn ghi đè hành vi đó.
Mazatec

Đây là một câu trả lời đúng hơn: link
Binod - GoFundMonica

Câu trả lời:


23

Điều này làm việc cho tôi:

remove_action('template_redirect', 'redirect_canonical');

Bạn có thể hướng dẫn tôi cho những gì nó sẽ làm? chuyển hướng kinh điển là gì? tôi chưa quen với wordpress
Yatin Mology

Bạn vừa cứu tôi rất nhiều đau đầu! cảm ơn bạn ! :-D
Jenski

1
Có nơi nào chúng ta có thể nhìn thấy các chuyển hướng này để chúng ta có thể loại bỏ chúng từng cái một không?
Shane Jones

Điều đó thật tuyệt. Bạn có biết tại sao wp-adminvẫn có thể chuyển hướng sau khi sử dụng này?
Gezim

Bạn có thể tìm thấy lời giải thích chi tiết về vấn đề này tại dev4press.com/blog/wordpress/2015/iêu
ronnefeldt

5

Như Ash đã đề xuất, bạn có thể tắt tính năng này bằng cách sử dụng đoạn mã sau:

remove_action('template_redirect', 'redirect_canonical');

Khi xem xét hàm redirect_canonical trong canonical.php, có vẻ như bạn cũng có thể sửa đổi hành vi bằng bộ lọc của riêng mình.

Ở cuối hàm redirect_canonical (), có một lệnh gọi để lọc câu trả lời cuối cùng:

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

Vì vậy, bạn có thể viết bộ lọc của riêng mình để sửa đổi chuyển hướng cuối cùng hoặc trả về null để dừng chuyển hướng, dựa trên đầu vào, do đó tắt tính năng cho một URL cụ thể hoặc một tập hợp con URL.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.