Το προεπιλεγμένο αρχείο .htaccess του WordPress: τι περιέχει και πώς το επαναφέρετε
Το ακριβές block .htaccess που γράφει το WordPress για τους μόνιμους συνδέσμους, πότε το WordPress το αναδημιουργεί αυτόματα και πώς το επαναφέρετε με το χέρι όταν τα άρθρα δίνουν 404 αλλά η αρχική σελίδα συνεχίζει να φορτώνει.
Το προεπιλεγμένο αρχείο .htaccess του WordPress είναι το μικρό block RewriteEngine που γράφει το λογισμικό στο .htaccess στη ρίζα του ιστότοπού σας, ώστε μόνιμοι σύνδεσμοι όπως /2026/10/onoma-arthrou/ να επιλύονται αντί να δίνουν 404. Έχει αυτή τη μορφή:
# 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
Αυτό είναι το ακριβές block, αντιγραμμένο από τον επίσημο οδηγό του WordPress για τον Apache HTTP Server και τη λογική rewrite που περιγράφεται στη σελίδα HelpHub για τους όμορφους μόνιμους συνδέσμους. Αν το RewriteBase σας δεν είναι / — για παράδειγμα επειδή το WordPress είναι εγκατεστημένο σε υποφάκελο — θα αντιστοιχεί σε αυτή τη διαδρομή αντ’ αυτού, κάτι εξίσου φυσιολογικό που παράγεται από το ίδιο το WordPress.
Τα βασικά
- Το WordPress παράγει αυτό το block αυτόματα, μόνο σε Apache και LiteSpeed, κάθε φορά που το αρχείο είναι εγγράψιμο και αποθηκεύετε τις Ρυθμίσεις > Μόνιμοι σύνδεσμοι.
- Αν το αρχείο λείπει ή είναι κατεστραμμένο, όλοι οι μόνιμοι σύνδεσμοι εκτός από την αρχική σελίδα επιστρέφουν 404, επειδή μόνο η αρχική σελίδα μπορεί να βρεθεί χωρίς τους κανόνες rewrite.
- Οτιδήποτε προσθέσετε εσείς ή ένα plugin πρέπει να βρίσκεται πάνω από το
# BEGIN WordPress, ποτέ μέσα στους δείκτες — το WordPress αντικαθιστά όλο το ενδιάμεσο περιεχόμενο σε κάθε αποθήκευση μόνιμων συνδέσμων.
Χρειάζεται να ξαναφτιάξετε το αρχείο με την πραγματική σας διαδρομή και μερικούς επιπλέον κανόνες; Ο δημιουργός .htaccess για WordPress συνθέτει ένα σωστό αρχείο κατευθείαν στο πρόγραμμα περιήγησής σας.
Τι κάνει κάθε γραμμή
Το RewriteEngine On ενεργοποιεί τη μονάδα mod_rewrite του Apache για αυτόν τον κατάλογο· χωρίς αυτή τη γραμμή, όλο το υπόλοιπο είναι ανενεργό.
Το RewriteBase / λέει στον Apache ότι οι επανεγγραμμένες διαδρομές είναι σχετικές με τη ρίζα του ιστότοπου. Το WordPress το ρυθμίζει ανάλογα με το πού βρίσκεται πραγματικά ο ιστότοπος — μια εγκατάσταση σε υποφάκελο παίρνει RewriteBase /blog/, όχι /.
Το RewriteRule ^index\.php$ - [L] είναι ένας φρουρός χωρίς επίδραση: αν το αίτημα είναι ήδη index.php, η αναδιατύπωση σταματά και το αίτημα περνά αναλλοίωτο.
Οι δύο γραμμές RewriteCond αποτελούν την πραγματική λογική. Τα %{REQUEST_FILENAME} !-f και !-d ρωτούν “αυτό το αίτημα ΔΕΝ αντιστοιχεί σε πραγματικό αρχείο, και ΔΕΝ αντιστοιχεί σε πραγματικό κατάλογο;”. Και τα δύο πρέπει να είναι αληθή για να ενεργοποιηθεί ο τελικός κανόνας — έτσι μια πραγματική εικόνα, ένα αρχείο CSS ή ένα μεταφορτωμένο PDF σερβίρονται απευθείας και δεν αγγίζουν ποτέ τη δρομολόγηση του WordPress.
Το RewriteRule . /index.php [L] είναι αυτό που κάνει τους μόνιμους συνδέσμους να λειτουργούν: οτιδήποτε επέζησε από τις δύο προηγούμενες συνθήκες — δηλαδή δεν είναι πραγματικό αρχείο ή φάκελος — στέλνεται στο index.php, και η ίδια η δρομολόγηση του WordPress (WP_Query, ετικέτες rewrite) αποφασίζει ποιο άρθρο, σελίδα ή αρχείο σημαίνει πραγματικά αυτό το URL.
Πότε το WordPress αναδημιουργεί αυτό το αρχείο, και πότε δεν μπορεί
Το WordPress προσπαθεί να γράψει το .htaccess μόνο του κάθε φορά που ανοίγετε Ρυθμίσεις > Μόνιμοι σύνδεσμοι και κάνετε κλικ στο Αποθήκευση αλλαγών, ακόμα κι αν δεν έχει αλλάξει τίποτα στην οθόνη. Αυτή η αποθήκευση ενεργοποιεί την flush_rewrite_rules(), η οποία προσπαθεί να ανοίξει το .htaccess για εγγραφή και να εισάγει το τρέχον block ανάμεσα στους δείκτες.
Αυτή η προσπάθεια αποτυγχάνει σιωπηλά, αφήνοντας το αρχείο απόν ή ξεπερασμένο, όταν:
- Το αρχείο ή ο γονικός φάκελός του δεν είναι εγγράψιμα από τον χρήστη με τον οποίο εκτελείται η PHP. Σε πολλά κοινόχρηστα φιλοξενίας, η PHP εκτελείται ως διαφορετικός χρήστης συστήματος από αυτόν που ανέβασε τα αρχεία μέσω FTP, οπότε δικαιώματα που φαίνονται σωστά σε έναν FTP client μπορούν ακόμα να εμποδίζουν την εγγραφή του WordPress.
- Χρησιμοποιείτε nginx. Το
.htaccessείναι μηχανισμός αποκλειστικά του Apache και του LiteSpeed (η ίδια η τεκμηρίωση του Apache για τοAllowOverrideεξηγεί γιατί: ο nginx δεν έχει αρχείο ρυθμίσεων ανά κατάλογο που να διαβάζει ξανά σε κάθε αίτημα). Το αντίστοιχο στον nginx είναι μια οδηγίαtry_filesμέσα στο block server, την οποία μπορεί να επεξεργαστεί μόνο κάποιος με πρόσβαση στον server· το WordPress δεν μπορεί ποτέ να τη γράψει για εσάς. - Το
AllowOverrideείναι ρυθμισμένο σεNoneγια τον κατάλογο του ιστότοπού σας στην κύρια ρύθμιση του Apache. Αυτή είναι η ρύθμιση που επιτρέπει καθόλου σε ένα.htaccessνα αντικαταστήσει κάτι· η τεκμηρίωση του Apache είναι ξεκάθαρη: μεAllowOverride None, “τα αρχεία .htaccess αγνοούνται πλήρως” — το WordPress μπορεί να γράψει ένα τέλειο αρχείο, και αυτό θα παραμείνει χωρίς επίδραση μέχρι να αλλάξει αυτή η ρύθμιση σε επίπεδο server. - Το αρχείο διαγράφηκε ή δεν υπήρξε ποτέ, και κάτι στην αποθήκευση δεν ενεργοποίησε αναδημιουργία — το πιο συχνό είναι ότι η δομή μόνιμων συνδέσμων ήταν ήδη η ίδια, οπότε το WordPress δεν είδε καμία αλλαγή για επανεγγραφή.
Πώς το επαναφέρετε με το χέρι
Αν άρθρα και σελίδες δίνουν 404 ενώ η αρχική σελίδα συνεχίζει να λειτουργεί, αυτή είναι η τυπική υπογραφή ενός απόντος ή χαλασμένου .htaccess. Διορθώστε το σε δύο βήματα.
1. Δοκιμάστε πρώτα τη λύση με ένα κλικ. Μεταβείτε στις Ρυθμίσεις > Μόνιμοι σύνδεσμοι στον πίνακα ελέγχου του WordPress και κάντε κλικ στο Αποθήκευση αλλαγών χωρίς να αλλάξετε τίποτα. Αν το αρχείο είναι εγγράψιμο, αυτό μόνο του το αναδημιουργεί και τελειώνει το πρόβλημα.
2. Αν αυτό δεν βοηθήσει, δημιουργήστε το αρχείο με το χέρι. Συνδεθείτε μέσω FTP/SFTP ή του διαχειριστή αρχείων του παρόχου σας, μεταβείτε στον φάκελο όπου είναι εγκατεστημένο το WordPress (εκείνον που περιέχει το wp-config.php), και ελέγξτε αν υπάρχει καθόλου το .htaccess — είναι κρυφό αρχείο, ορισμένοι διαχειριστές αρχείων το κρύβουν από προεπιλογή· ενεργοποιήστε “εμφάνιση κρυφών αρχείων”.
- Αν λείπει, δημιουργήστε ένα νέο αρχείο με το όνομα ακριβώς
.htaccess(όχι.txt, τίποτα πριν την τελεία). - Επικολλήστε το προεπιλεγμένο block από πάνω, προσαρμόζοντας το
RewriteBaseαν το WordPress βρίσκεται σε υποφάκελο. - Αποθηκεύστε και επαναφορτώστε τον μόνιμο σύνδεσμο ενός άρθρου για να επιβεβαιώσετε ότι λειτουργεί.
Αν συνεχίζει να δίνει 404 μετά από αυτό, η αιτία έχει μετατοπιστεί από “λείπει το .htaccess” σε “το .htaccess αγνοείται” — ρωτήστε τον πάροχό σας για το AllowOverride, επειδή ένα σωστό αρχείο σε έναν κατάλογο όπου ο Apache έχει εντολή να το αγνοεί συμπεριφέρεται ακριβώς όπως η απουσία αρχείου.
Οι δικοί σας κανόνες έναντι του block του WordPress
Ένα plugin ή μια χειροκίνητη επεξεργασία μπορεί να προσθέσει δικούς του κανόνες — ανακατευθύνσεις, προστασία hotlink, κεφαλίδες cache. Αυτό είναι ένα διακριτό, ξεχωριστό block από αυτό που παράγει το WordPress, και τα δύο δεν θα πρέπει ποτέ να επικαλύπτονται:
# Κανόνες που προσθέσατε εσείς ή ένα plugin — ΠΑΝΩ από τους δείκτες WordPress
<FilesMatch "\.(jpg|jpeg|png|gif)$">
# παράδειγμα: προστασία hotlink, κανόνες cache κ.λπ.
</FilesMatch>
# 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
Οτιδήποτε τοποθετηθεί ανάμεσα στα # BEGIN WordPress και # END WordPress διαγράφεται σιωπηλά την επόμενη φορά που κάποιος αποθηκεύσει την οθόνη Μόνιμων συνδέσμων, επειδή το WordPress αντιμετωπίζει ολόκληρο αυτό το τμήμα ως δικό του και το ξαναγράφει εντελώς. Αυτή είναι η πιο συχνή αιτία για “ο δικός μου κανόνας εξαφανίστηκε” — δεν αφαιρέθηκε ποτέ σκόπιμα, απλά βρισκόταν μέσα σε ένα block που το WordPress θεωρεί δικό του. Για ανακατευθύνσεις ειδικότερα, δείτε τους σωστά φτιαγμένους κανόνες ανακατεύθυνσης .htaccess WordPress για να μάθετε πού πρέπει να βρίσκονται και πώς να αποφύγετε βρόχους.
Είναι επίσης η πιο συχνή αιτία ενός ξαφνικού σφάλματος 500 Internal Server Error αμέσως μετά την επεξεργασία του αρχείου: ένας κανόνας που αντιγράφηκε από ανάρτηση φόρουμ γραμμένη για διαφορετική έκδοση του Apache (σύνταξη Order/Deny του 2.2 αναμεμειγμένη με σύνταξη Require του 2.4) χαλάει την ανάλυση ολόκληρου του αρχείου, συμπεριλαμβανομένου του block WordPress από κάτω, και καταρρέει ολόκληρος ο ιστότοπος — όχι μόνο το μέρος που αγγίξατε.
Πέρα από το προεπιλεγμένο block
Το προεπιλεγμένο block χειρίζεται μόνο τη δρομολόγηση μόνιμων συνδέσμων. Αν θέλετε επίσης να ενισχύσετε την πρόσβαση σε ευαίσθητα αρχεία ή να προσθέσετε τη χούφτα κανόνων .htaccess που πραγματικά μειώνουν την επιφάνεια επίθεσης — αποκλεισμός εκτέλεσης PHP στο /uploads, άρνηση απευθείας αιτημάτων προς το wp-config.php — δείτε τους κανόνες ασφάλειας .htaccess WordPress που πραγματικά βοηθούν. Και αν οι μόνιμοι σύνδεσμοι δίνουν 404 για άλλο λόγο — λανθασμένη δομή μόνιμων συνδέσμων, ένα επίπεδο cache που σερβίρει παλιούς κανόνες, συγκρούσεις multisite σε υποκαταλόγους — οι μη λειτουργικοί μόνιμοι σύνδεσμοι WordPress εξετάζουν τις άλλες αιτίες.
Συχνές ερωτήσεις
Τι είναι το προεπιλεγμένο αρχείο .htaccess του WordPress;
Είναι το block RewriteEngine που γράφει το WordPress ανάμεσα στα # BEGIN WordPress και # END WordPress ώστε οι μόνιμοι σύνδεσμοι να επιλύονται στο index.php αντί να δίνουν 404.
Ποιος είναι ο ακριβής προεπιλεγμένος κώδικας .htaccess του WordPress;
RewriteEngine On, RewriteBase /, ένας κανόνας διέλευσης για το index.php, δύο συνθήκες που ελέγχουν ότι το αίτημα δεν είναι πραγματικό αρχείο ή κατάλογος, και ένας τελικός κανόνας που στέλνει όλο το υπόλοιπο στο index.php. Το πλήρες block παρατίθεται στην αρχή αυτού του οδηγού.
Γιατί όλα τα άρθρα μου δίνουν 404 εκτός από την αρχική σελίδα;
Η αρχική σελίδα μπορεί να βρεθεί χωρίς κανένα κανόνα rewrite· κάθε άλλος μόνιμος σύνδεσμος τους χρειάζεται. Ένα απόν ή κατεστραμμένο .htaccess στον Apache παράγει ακριβώς αυτό το μοτίβο.
Αναδημιουργεί αυτόματα το WordPress το .htaccess;
Μόνο αν το αρχείο είναι εγγράψιμο — η επανααποθήκευση των Ρυθμίσεων > Μόνιμων συνδέσμων το ενεργοποιεί. Αν το αρχείο δεν είναι εγγράψιμο, λείπει σε πάροχο που δεν το παράγει αυτόματα, ή το AllowOverride είναι απενεργοποιημένο, το WordPress δεν μπορεί να το διορθώσει για εσάς και πρέπει να δημιουργήσετε ή να διορθώσετε το αρχείο με το χέρι.
Γιατί ο nginx δεν έχει αρχείο .htaccess του WordPress;
Το .htaccess λειτουργεί μόνο σε Apache και LiteSpeed. Ο nginx δεν έχει αρχείο ρυθμίσεων ανά κατάλογο και αγνοεί το .htaccess εντελώς· η ίδια δρομολόγηση γράφεται ως κανόνας try_files στο block server του nginx.
Γιατί χάλασε το .htaccess μου αφού αποθήκευσα τους μόνιμους συνδέσμους;
Ένας δικός σας κανόνας τοποθετήθηκε μέσα στους δείκτες # BEGIN WordPress / # END WordPress αντί από πάνω τους, και το WordPress αντικατέστησε ολόκληρο αυτό το τμήμα στην επόμενη αποθήκευση μόνιμων συνδέσμων.
Φτιάξτε ένα καθαρό, σωστό .htaccess — προεπιλεγμένο block μόνιμων συνδέσμων συν όσους κανόνες ασφάλειας ή ανακατεύθυνσης χρειάζεστε πραγματικά — με τον δωρεάν δημιουργό .htaccess για WordPress.
FAQ
Ερωτήσεις
Τι είναι το προεπιλεγμένο αρχείο .htaccess του WordPress;
Είναι το μικρό block RewriteEngine που γράφει το WordPress στο .htaccess στη ρίζα του ιστότοπου, ώστε να λειτουργούν οι μόνιμοι σύνδεσμοι. Βρίσκεται ανάμεσα στα σχόλια # BEGIN WordPress και # END WordPress και στέλνει κάθε αίτημα που δεν αντιστοιχεί σε πραγματικό αρχείο ή φάκελο στο index.php, όπου το WordPress αποφασίζει τι θα εμφανίσει.
Ποιος είναι ο ακριβής προεπιλεγμένος κώδικας .htaccess του WordPress;
RewriteEngine On, RewriteBase /, ένας κανόνας που αφήνει αναλλοίωτα τα υπάρχοντα αρχεία και φακέλους, και ένα τελικό RewriteRule που στέλνει όλο το υπόλοιπο στο index.php διατηρώντας το query string. Το πλήρες block παρατίθεται παρακάτω και ταιριάζει με αυτό που παράγει το ίδιο το WordPress στις Ρυθμίσεις > Μόνιμοι σύνδεσμοι.
Γιατί όλα τα άρθρα μου δίνουν 404 εκτός από την αρχική σελίδα;
Αυτό είναι το κλασικό σύμπτωμα ενός απόντος ή κατεστραμμένου .htaccess στον Apache. Η αρχική σελίδα φορτώνει επειδή ο server βρίσκει απευθείας το index.php, αλλά κάθε άλλος μόνιμος σύνδεσμος χρειάζεται τους κανόνες rewrite για να φτάσει εκεί, και χωρίς αυτούς ο Apache απλά ψάχνει ένα αρχείο που δεν υπάρχει και επιστρέφει 404.
Αναδημιουργεί αυτόματα το WordPress το .htaccess;
Μόνο όταν το αρχείο είναι εγγράψιμο και αποθηκεύσετε ξανά τις Ρυθμίσεις > Μόνιμοι σύνδεσμοι. Το WordPress ελέγχει αν μπορεί να γράψει στο αρχείο και, αν μπορεί, ξαναγράφει το block ανάμεσα στους δείκτες του. Αν το αρχείο λείπει, είναι μόνο για ανάγνωση, ή ανήκει σε διαφορετικό χρήστη από αυτόν που εκτελεί την PHP, το WordPress αποτυγχάνει σιωπηλά και πρέπει να το δημιουργήσετε με το χέρι.
Γιατί ο nginx δεν έχει αρχείο .htaccess του WordPress;
Επειδή το .htaccess είναι λειτουργία του Apache (και του LiteSpeed)· ο nginx δεν έχει αντίστοιχο και αγνοεί το αρχείο εντελώς. Στον nginx η ίδια λογική δρομολόγησης γράφεται ως οδηγία try_files μέσα σε ένα block server, που μπορεί να επεξεργαστεί μόνο ο πάροχος φιλοξενίας σας ή ένας διαχειριστής συστήματος.
Γιατί χάλασε το .htaccess μου αφού αποθήκευσα τους μόνιμους συνδέσμους;
Σχεδόν πάντα επειδή ένα plugin ή μια προηγούμενη χειροκίνητη επεξεργασία τοποθέτησε δικούς του κανόνες μέσα στους δείκτες του WordPress αντί από πάνω τους. Το WordPress αντικαθιστά όλο το περιεχόμενο ανάμεσα σε # BEGIN WordPress και # END WordPress κάθε φορά που αποθηκεύονται οι μόνιμοι σύνδεσμοι, οπότε κάθε κανόνας που τοποθετείται μέσα διαγράφεται χωρίς προειδοποίηση.