.htaccess lewati penanganan kesalahan WordPress 404 untuk file statis .
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
RewriteCond %{REQUEST_FILENAME} \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ [NC]
RewriteRule .* - [L]
</IfModule>
Catatan: Aturan-aturan ini dihasilkan oleh plugin W3 Total Cache *
Nginx melewatkan WordPress 404 untuk menangani file statis.
if (-f $request_filename) {
break;
}
if (-d $request_filename) {
break;
}
if ($request_uri ~ "(robots\.txt|sitemap\.xml(\.gz)?)") {
break;
}
if ($request_uri ~* \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$) {
return 404;
}
Saya tidak yakin ini mungkin. Jika Anda melihat kode htaccess yang dibuat WordPress ketika Anda mengaktifkan permalink, pada dasarnya tertulis: "Jika file / direktori tidak dapat ditemukan, kirim ke index.php." Ini termasuk semua 404 permintaan aktual. Di luar membuat daftar setiap sumber daya publik yang dihasilkan secara dinamis yang diketahui oleh WordPress dan secara langsung memasukkan ini ke dalam .htaccess, Anda harus memuat php untuk menangani 404-an.
sumber
Saya menyukai gagasan Chris_O , tetapi saya membuat versi saya sendiri, yang lebih aman.
Jadi apa yang saya lakukan, saya hanya menambahkan folder ke pengecualian, jadi jika permintaan Anda mulai dari baris tersebut - itu jelas bukan permalink yang valid. Sebagian besar permintaan berasal dari bot yang mencoba memeriksa isi folder tersebut untuk dieksploitasi. Mereka akan disaring secara efektif, dan jika perlu Anda dapat menampilkan beberapa halaman 404 statis kecil.
Permintaan lain masih akan ditangani oleh wordpress, dan jika seseorang memasukkan alamat yang salah, itu akan menampilkan pesan yang tidak ditemukan oleh pengguna di dalam templat Anda. Solusi dari Chris_O hanya akan berfungsi untuk permintaan yang terlihat seperti ekstensi file, jika tidak mereka juga akan ditangani oleh wordpress.
Untuk membuatnya lebih dapat diandalkan, Anda dapat mengambil file akses mentah dan mencari 404 kesalahan. Jika Anda melihat banyak permintaan yang dimulai dengan baris tertentu, Anda juga dapat memasukkannya ke filter ini:
sumber
Saya memiliki beberapa CMS yang diinstal di situs saya jadi saya menggunakan sesuatu seperti ini untuk menggunakan halaman kesalahan 404 yang sama untuk semua CMS. Saya menggunakan conf ini untuk Nginx + FastCgi dan itu berfungsi dengan baik:
Saya menggunakan konfigurasi ini bersama dengan ini di php.ini:
wordpress diinstal seperti ini http://example.com/wordpress/ . 404.html terletak di root http://example.com/ .
PS Jangan lupa bahwa layanan PHP dan Nginx perlu di-restart setelah membuat perubahan pada file php.ini atau nginx.conf agar perubahan dapat diterapkan.
sumber
Ada 3 cara untuk melakukan ini
Tutorial lengkap - (tautan mati dan dialihkan ke spam)
sumber