Συμπτώματα :
– Η wordpress ιστοσελίδα μου εμφανίζει error 404
– Χρησιμοποιώ μόνο Nginx στα hosting settings του plesk
– To error_log στην PHP εμφανίζει generic error 404 Not Found
Αφορά : WebHosting | Linux Plesk Reseller Hosting
Όταν δούμε στον browser το error 404 σημαίνει ότι ο webserver δεν μπόρεσε να βρεί την ζητούμενη σελίδα για να μας την εμφανίσει.
Reset wordpress permalinks
Κάποια λάθος ρύθμιση ή κάποιο plugin μπορεί να έχει προσθέσει λάθος rules στο .htaccess αρχείο ή μπορεί να μην συμβαδίζουν οι ρυθμίσεις του wordpress με τους rewrite κανόνες όπου έχει το .htacess
Μπορούμε να ορίσουμε εκ νέου το url structrure του wordpress μέσω του wp-admin
Επιλέγουμε
WordPress > Log in > Settings > Permalinks >Πατάμε αποθήκευση.
Επαναφορά .htaccess στην default μορφή του.
To .htaccess είναι ένα configuration αρχείο όπου περιέχει εντολές για τον apache webserver.
Μια από τις κύριες λειτουργίες του είναι η μετονομασία των url’s σε μια πιό φιλική μορφή.
Tο url της μορφής https://example.com/?page_id=1662 με την χρήση του .htacces μετονομάζεται αυτόματα σε https://example.com/mypage
Μπορούμε να τοποθετήσουμε το default .htaccess αρχείο του wordpress με σκοπό να διορθώσουμε πιθανά 404 errors.
Μετονομάζουμε το υπάρχων .htaccess σε htaccess.txt
Δημιουργούμε ένα νέο txt αρχείο με την ονομασία .htaccess
Επισυνάπτουμε τους παρακάτω κανόνες
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Plesk WordPress Nginx Only
Στο plesk controlpanel η default λειτουργία είναι να δουλεύουν ταυτόχρονα ο apache με τον nginx webserver.
Αν επιλέξετε από τα hosting settings του domain, η εξυπηρέτηση να γίνεται από τον nginx, ενώ στις ρυθμίσεις apache & nginx settings έχετε αφαιρέσει το proxy mode, θα εμφανίζεται 404 error όταν θα προσπαθήσετε να δείτε σελίδες.
Άν έχουμε εγκατεστημένο το plesk controlpanel σε dedicated server ή VPS (όχι σε shared hosting λογαριασμό) έχουμε μια επιπλέον ρύθμιση στο μενού Apache & Nginx Settings.
Εκεί πρέπει να τοποθετήσετε τα rewrite rules του wordpress, καθώς ο nginx δεν μπορεί να διαβάσει το htaccess αρχείο.
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location|status_phpfpm)) {
set $test "${test}C";
}
if ($test = PC) {
rewrite ^/(.*)$ /index.php?$1;
}
Αν το wordpress είναι σε φάκελο πχ mydomain.gr/wordpress
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location|status_phpfpm)) {
set $test "${test}C";
}
if ($test = PC) {
rewrite ^/(.*)$ /sub-dir/index.php?$1;
}