wordpress 404 error


Συμπτώματα :

– Η 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;
}