Nonaktifkan HANYA URL yang lengkap otomatis, bukan keseluruhan sistem URL kanonik


8

Saya memiliki blog dengan beberapa halaman dalam beberapa kategori "proyek" yang terstruktur / dinamai seperti ini:

  • / proyek / proyek-2012
  • / proyek / proyek-2013
  • / proyek / proyek-2014
  • / proyek / proyek-2015

Ketika pengguna memasukkan URL seperti http://myblog.com/project atau bahkan http://myblog.com/proje ia diarahkan ke halaman / proyek / proyek-2012 . (Dengan 301 Dipindahkan Secara Permanen!)

Meskipun saya ingin wordpress mengubah URL yang menghasilkan satu halaman yang jelas (mis. Seperti http://myblog.com/?p=123 ) menjadi bentuk kanonik, saya hanya ingin menonaktifkan pelengkapan otomatis URL untuk URL "tidak jelas" yang mungkin mengarah ke beberapa halaman.

Pertanyaan saya adalah: Bagaimana saya bisa mencapai ini?


Saya juga melakukan riset ...

  • Jawaban yang diterima untuk pertanyaan Disable Wordpress URL auto complete menonaktifkan seluruh sistem URL kanonik. Ini tidak dapat diterima untuk saya.

  • Sekitar empat tahun lalu, sesuatu seperti ini muncul di pelacak bug Wordpress: https://core.trac.wordpress.org/ticket/8948 Sementara beberapa solusi bagus (seperti menawarkan halaman "Kami tidak menemukan URL Anda. Tapi apakah Anda mungkin mencari salah satu halaman berikut? ") dibahas di sana, tiket ditutup pada akhirnya.

  • EDIT: Sebenarnya ada tiket baru di https://core.trac.wordpress.org/ticket/16557 yang mencakup persis apa yang saya butuhkan. Tampaknya ditargetkan untuk rilis 4.0. Dan komentar tiket juga mengandung solusi (lihat di bawah).


fitur menebak URL inti ini juga mengacaukan SEO dan alat-alat SEO !!
Mau

Jawaban:


11

Oke, setelah mencari sedikit lebih banyak akhirnya saya menemukan jawaban untuk pertanyaan saya sendiri yang tersembunyi di komentar tiket permintaan fitur ini: https://core.trac.wordpress.org/ticket/16557 Pengguna nacin menyarankan untuk menggunakan kode ini:

function remove_redirect_guess_404_permalink( $redirect_url ) {
    if ( is_404() )
        return false;
    return $redirect_url;
}

add_filter( 'redirect_canonical', 'remove_redirect_guess_404_permalink' );

Jika Anda menambahkan ini ke file php plugin baru (misalnya di wp-content / plugins / disable-url-autocorrect-guessing.php) Anda akan memiliki plugin yang bagus yang dapat Anda aktifkan untuk menonaktifkan fitur "menebak" autocorrect Wordpress. .

Untuk menyelamatkan Anda dari masalah, saya benar-benar melakukan ini dan menyerahkan plugin saya di Wordpress.org. Setelah ditinjau di sana, Anda harus dapat mengunduhnya di sini: https://wordpress.org/plugins/disable-url-autocorrect-guessing/


Meskipun ini merupakan solusi yang berfungsi, kode yang disarankan agak meretas. Setelah permintaan fitur di https://core.trac.wordpress.org/ticket/16557 benar-benar diimplementasikan, akan ada cara solusi yang lebih baik untuk ini serta kontrol yang jauh lebih baik tentang bagaimana tebakan seharusnya dilakukan.


Seandainya saya bisa memperbaiki ini tiga kali ...
KalenGi

Mengilhami saya karena saya mengalami masalah dalam pengalihan paged. Saya berencana untuk remove_filter(). Tapi sekarang hanya melewati kasus tertentu di mana saya mengalami masalah. Kalau-kalau ada orang yang tertarik dengan masalah saya: wordpress.stackexchange.com/questions/307670/…
Parixit

tidak lagi berfungsi di v5 +
nodws

@nodws: Apa yang Anda maksud? Saya menggunakan plugin dengan potongan kode pada 5.2.2 dan masih berfungsi dengan baik.
Hauke ​​P.

Oh, itu konflik dengan pengalihan
YOAST

0

Sayangnya redirect_canonical()400+ baris kode (dan terus berkembang dari rilis ke rilis), yang tidak terstruktur khusus untuk dikendalikan oleh tujuan. Semua atau tidak sama sekali kesepakatan yang tidak dapat dikonfigurasi secara fleksibel.

Dari sudut pandang praktis, pilihan terbaik Anda adalah:

  1. Menangani redirect secara manual, di template_redirect.
  2. Mencegah pengalihan sebagai redirect_canonicalpengait jika target itu muncul tidak diinginkan.

Dalam kedua kasus Anda harus mengembangkan logika apa yang sebenarnya membuat pengalihan yang tidak diinginkan.


Huh, itu sangat disayangkan sangat disayangkan. :-( Definisi saya tentang arahan ulang yang tidak diinginkan cukup sederhana: Setiap URL yang tidak dapat diselesaikan dengan tepat satu target (tetapi beberapa atau tidak sama sekali) tidak diinginkan dan harus menghasilkan 404.
Hauke ​​P.

@ HaukeP. logika bertanggung jawab untuk itu adalah bagian dari redirect_guess_404_permalink()dan itu tidak membuat perbedaan seperti itu, hanya mengambil pertandingan pertama SQL menghasilkan :(
Rarst

Sebenarnya saya memang menemukan solusi sendiri: wordpress.stackexchange.com/a/144970/51898
Hauke ​​P.

@ HaukeP. Saya sedikit salah paham tentang "tepat satu target", karena beberapa kasus pencocokan fuzzy secara teknis hanya akan menyelesaikan satu pertandingan, tetapi itu tidak sama dengan menyingkirkan barang-barang fuzzy secara umum :)
Rarst

Ya, sebenarnya ketika menulis komentar terakhir saya, saya berhenti sejenak untuk memikirkan lagi karena takut disalahpahami. :) Jadi sepertinya saya seharusnya menulis komentar saya (dan pertanyaan) lebih tepatnya.
Hauke ​​P.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.