Vô hiệu hóa tự động URL Wordpress


15

Gần đây tôi nhận thấy rằng Wordpress cố gắng tự động hoàn thành một URL khi nó không được gửi toàn bộ. Ví dụ: tôi có một URL bài đăng trông như thế này:

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

Nếu tôi duyệt đến URL sau:

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

Tôi có thể thấy rằng URL được gửi tới Wordpress nhưng Wordpress đang thực hiện chuyển hướng 301 đến http://www.mysite.com/some-post-title.

Làm thế nào tôi có thể vô hiệu hóa hành vi này?


Một giải pháp đã được thử nghiệm không vô hiệu hóa toàn bộ hệ thống URL chuẩn mà chỉ vô hiệu hóa phần "đoán" tự động hoàn thành được nêu ở đây
Hauke ​​P.

Câu trả lời:


19

Tôi tin rằng đó là redirect_canonicalchức năng hooked template_redirect. Bạn sẽ có thể vô hiệu hóa nó với:

remove_filter('template_redirect', 'redirect_canonical'); 

Nhưng bạn thực sự nên suy nghĩ về việc bạn có muốn làm điều đó không vì nó khá phức tạp và thực hiện một số chức năng SEO quan trọng:

Chuyển hướng các liên kết đến URL thích hợp dựa trên url trang web.

Các công cụ tìm kiếm coi www.somedomain.com và somedomain.com là hai URL khác nhau khi cả hai cùng đi đến một vị trí. Cải tiến SEO này ngăn chặn hình phạt cho nội dung trùng lặp bằng cách chuyển hướng tất cả các liên kết đến với một hoặc khác.

Ngăn chặn chuyển hướng cho nguồn cấp dữ liệu, theo dõi, tìm kiếm, cửa sổ bật lên nhận xét và URL quản trị viên. Không chuyển hướng trên IIS 7 không hỗ trợ permalink, xem trước trang / bài đăng, quản trị viên WP, Trackbacks, robot.txt, tìm kiếm hoặc trên các yêu cầu POST.

Cũng sẽ cố gắng tìm liên kết chính xác khi người dùng nhập URL không tồn tại dựa trên truy vấn chính xác của WordPress. Thay vào đó, sẽ cố phân tích URL hoặc truy vấn để cố gắng tìm đúng trang cần truy cập.

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

Những điều sau đây có thể giết chết tự động hoàn thành mà không gây rối với thành phần SEO, nhưng tôi không thể hứa điều đó. Mã này hầu như không được kiểm tra vì tôi chưa bao giờ muốn vô hiệu hóa điều này. Tôi thực sự phải nghiên cứu redirect_canonicalđể chắc chắn về bất cứ điều gì.

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);

Tôi đã thêm đoạn mã này vào cuối tệp /wp-includes/canonical.php của tôi và các chuyển hướng vẫn đang diễn ra. Tôi có làm điều gì sai? Bất cứ ai khác không thể vô hiệu hóa hành vi này?
dùng1380540

3

Điều này có vẻ vô trách nhiệm, để "đoán" này tự động xảy ra. Tôi sẽ cởi mở hơn nhiều với nó nếu có một số phương tiện xác định đó là trang chính xác để đi đến.

Tôi có nhiều trang được xây dựng theo trình tự và tính năng tự động đoán này không chính xác khi chọn phản hồi với các trang (ngẫu nhiên?) Ở đâu đó trong chuỗi, trái ngược với trang bắt đầu.

CẬP NHẬT: Đây là hành vi đã biết và đang được xem xét tại đây: https://core.trac.wordpress.org/ticket/16557


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.