Έχω φρέσκια εγκατάσταση του Apache 2.2 στο μηχάνημα Vista, όλα λειτουργούν μια χαρά, εκτός από την επανεγγραφή mod.
I've uncommented
LoadModule rewrite_module modules/mod_rewrite.s
αλλά κανένας από τους κανόνες επαναγραφής μου δεν λειτουργεί, ακόμα και απλοί όπως
RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404
Όλοι οι κανόνες που χρησιμοποιώ λειτουργούν στη φιλοξενία μου, οπότε θα πρέπει να είναι εντάξει, οπότε η ερώτησή μου είναι, υπάρχει κάποιο κρυφό πράγμα στη διαμόρφωση του apache, που θα μπορούσε να μπλοκάρει το mod rewrite;
Για την περίπτωσή μου, είχα
RewriteEngine On
στην .htaccess
μου, μαζί με την ενότητα που φορτώνεται, και δεν λειτουργούσε.
Η λύση στο πρόβλημά μου ήταν να επεξεργαστώ την καταχώρηση vhost για να συμπεριλάβω
AllowOverride all
στην ενότητα <Κατάλογος>
για την εν λόγω τοποθεσία.
Μόλις παρατήρησα ότι είπατε mod_rewrite.s αντί για mod_rewrite.so - ελπίζω ότι πρόκειται για τυπογραφικό λάθος στην ερώτησή σας και όχι στο αρχείο httpd.conf! :)
Έχω συνηθίσει περισσότερο να χρησιμοποιώ τον Apache στο Linux, αλλά χρειάστηκε να το κάνω αυτό τις προάλλες.
Πρώτα απ' όλα, ρίξτε μια ματιά στον κατάλογο εγκατάστασης του Apache. (Θα υποθέσω ότι το εγκαταστήσατε στο "C:\Program Files" εδώ)
Ρίξτε μια ματιά στο φάκελο: "C:\Program Files\Apache Software Foundation\Apache2.2\modules" και βεβαιωθείτε ότι υπάρχει εκεί ένα αρχείο που ονομάζεται mod_rewrite.so. (Θα πρέπει να υπάρχει, παρέχεται ως μέρος της προεπιλεγμένης εγκατάστασης.
Στη συνέχεια, ανοίξτε το αρχείο "C:\Program Files\Apache Software Foundation\Apache2.2\conf" και ανοίξτε το httpd.conf. Βεβαιωθείτε ότι η γραμμή:
#LoadModule rewrite_module modules/mod_rewrite.so
δεν έχει σχολιαστεί:
LoadModule rewrite_module modules/mod_rewrite.so
Επίσης, αν θέλετε να ενεργοποιήσετε την RewriteEngine από προεπιλογή, ίσως να θέλετε να προσθέσετε κάτι σαν
<IfModule mod_rewrite>
RewriteEngine On
</IfModule>
στο τέλος του αρχείου httpd.conf.
Αν όχι, βεβαιωθείτε ότι έχετε καθορίσει
RewriteEngine On
κάπου στο αρχείο .htaccess.
Προφανώς υπάρχουν περισσότεροι από ένας τρόποι για να το κάνετε, αλλά θα πρότεινα να χρησιμοποιήσετε τον πιο τυπικό:
ErrorDocument 404 /index.php?page=404