Nginx WordPress permalinks 404 error Page not found

Nginx menjadikan laman web lebih pantas. Tetapi, Nginx menyebabkan ralat 404 permalinks WordPress. Ini berlaku kerana peraturan penulisan semula Apache tidak berfungsi dengan NGINX. Artikel ini, kita akan belajar mengenai permalink WordPress di Nginx.
Permalinks WordPress yang dioptimumkan untuk mesra SEO dan serasi dengan pelayan web yang paling popular
- Apache: gunakan mod_rewrite module.
- Nginx: gunakan try-files.
- Lighttpd: gunakan mod_rewrite atau 404 handler.
- Microsoft IIS 7+ gunakan URL Rewrite 1.1+ module dan PHP 5 sebagai FastCGI
- Microsoft IIS 6+ bekerjasama dengan ASAPI_Rewrite atau Ionic ISAPI Rewriting Filter (IIRF)
Kenapa Nginx WordPress permalinks 404 error Page not found?
Secara teknikalnya, sesiapa sahaja yang memilih PHP-FPM sebagai pengendali PHP, seperti yang disarankan oleh WordPress. Dan, untuk memanfaatkan NGINX, saya cadangkan untuk mengaktifkan PHP-FPM untuk semua domain yang melayani PHP.
Malangnya, peraturan mod_security tidak akan berfungsi dengan Nginx, dan peraturan dan sekatan .htaccess menulis semula tidak akan berlaku lagi. Peraturan penulisan semula Nginx dan Apache mempunyai format yang sama sekali berbeza. Arahan di Apache seperti Rewritecond, RewriteRule dan banyak lagi yang amat menyusahkan dalam konfigurasi Nginx. Ini bermaksud bahawa menulis semula permalink WordPress tidak akan berfungsi lagi setelah beralih ke Nginx.
Membetulkan Nginx WordPress permalinks 404 error Page not found
Kami boleh menetapkan konfigurasi permalink kami yang sangat hebat secara langsung dengan mengedit Nginx. Kami akan menggunakan arahan try_files supaya WordPress dapat mula menggunakan permalink yang cantik. Mari kita lihat konfigurasi untuk WordPress yang dipasang pada domain anda.
Cari lokasi / blok di dalam konfigurasi nginx dan tambahkan baris berikut di dalamnya
location / { # WordPress permalinks in Nginx try_files $uri $uri/ /index.php?$args; }
Pada kod ini, kami membiarkan Nginx memeriksa keberadaan file di URL yang menggunakan $uri, kemudian mencari direktori ($uri /), dan jika tidak menemukan keduanya, ia akan membuat pengalihan dalaman ke /index.php dengan argumen dari rentetan pertanyaan sebagai parameter.
Setelah mengedit, simpan fail anda, dan muatkan semula Nginx untuk menetapkan perubahan
service nginx reload
atau
systemctl reload nginx.service
Alternatively, in servers with Plesk control panel, we just had to add the rules in the “Additional Nginx directives” section inside the domain settings at Domains > example.com > Apache & nginx Settings. That fixed the permalinks and the website started working again.
Sebagai alternatif, di pelayan dengan panel kawalan Plesk, kita hanya perlu menambahkan peraturan di bahagian “Additional Nginx directives” di dalam tetapan domain di Domains > example.com > Apache & nginx Settings. Itu memperbaiki permalink dan laman web mula berfungsi semula.
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location)) {
set $test "${test}C";
}
if ($test = PC) {
rewrite ^/(.*)$ /index.php?$1;
}
Sebaliknya, dalam pelayan dengan CPanel. Perlu diingat bahawa fail konfigurasi Nginx merujuk kepada fail konfigurasi pengguna di lokasi ini di mana $USERNAME mewakili nama pengguna
/etc/nginx/conf.d/users/$USERNAME.conf
Seterusnya, anda perlu menambahkan snippet ini ke file config di atas (/wordpress di sini merujuk di mana pemasangan WordPress dikonfigurasi untuk tersedia)location /wordpress { try_files $uri $uri/ /wordpress/index.php?$args; location ~ \.php7?$ { include conf.d/includes-optional/cpanel-fastcgi.conf; fastcgi_pass unix:/opt/cpanel/ea-php73/root/usr/var/run/php-fpm/1ed179754201ac2644e8c70140bacb23c7786484.sock; error_page 502 503 /FPM_50x.html; } }
Akhirnya, anda mulakan semula Nginx dengan menjalankan perintah ini
/scripts/restartsrv_nginx
Kesimpulan
Nginx wordpress permalinks 404 error page not found berlaku apabila peraturan menulis semula tidak mengikut format Nginx. Pembaikannya melibatkan menukar peraturan dan mengubah konfigurasi Nginx.