kordoni Δημοσ. 24 Απριλίου 2018 Δημοσ. 24 Απριλίου 2018 Εχω Apache/2.4.27 σε Win10, τοπικα. Προσπαθώ να σβήσω τα file extensions απο τα urls (πχ .html, .php) Λογικά αυτό γινετε και απο το httpd.conf, χωρίς το htaccess. Μέσα στο httpd.conf , στο τέλος του, βάζω <Directory "c:/Apache24/htdocs"> <IfModule mod_rewrite.so> RewriteEngine On RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule (.*) $1.php [L] RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule (.*) $1.html [L] </IfModule> </Directory> Κάνω restart τον Apache, αλλά αν παω στο http://localhost/nikolopoulos/contact μου δίνει error 404. Μόνο αν παω στο http://localhost/nikolopoulos/contact.html μπορω να δω τη σελιδα Τι έχει παει στραβά? Νομίζω αυτή η λύση είναι στανταρ, οπότε δε μπορώ να καταλάβω γιατί δεν παίζει. Τι δεν έχω καταλάβει? Ευχαριστώ
The King Δημοσ. 24 Απριλίου 2018 Δημοσ. 24 Απριλίου 2018 (επεξεργασμένο) Το πήγες πολύ βαθειά, απλά δημιούργησε ένα .htaccess αρχείο (μαζί με την τελεία) και βάλε το στο root dir του website σου, δηλαδή c:/Apache24/htdocs/nikolopoulos/.htaccess . RewriteEngine on ## Για καταλήξεις .html ## RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^ %{REQUEST_URI}.html [NC,L] ## Για καταλήξεις .php ## RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [NC,L] . Σβήσε αυτά που έβαλες στο httpd.conf γιατί μεθαύριο θα θες να βάλεις 2ο, 3o.. website στο local σου και δε θα θες τα παραπάνω ως global ρυθμίσεις και για τα υπόλοιπα websites. Επεξ/σία 24 Απριλίου 2018 από The King
kordoni Δημοσ. 24 Απριλίου 2018 Μέλος Δημοσ. 24 Απριλίου 2018 Δουλεψε κατευθείαν . Σε ευχαριστώ πολύ. Ακόμα όμως δεν καταλαβαίνω γιατί να μην παίξει το αρχικό στο httpd.conf. Πέρα απο το αν είναι global ρυθμίσεις. Ας πούμε οτι δεν με ενοχλει που ειναι global και οτι σε αυτο τον σερβερ θελω να ισχυει αυτο για ολα τα site. Γιατι δεν δουλευει ? Τι λαθος εχω κανει?
The King Δημοσ. 24 Απριλίου 2018 Δημοσ. 24 Απριλίου 2018 (επεξεργασμένο) 1 ώρα πριν, kordoni είπε Δουλεψε κατευθείαν . Σε ευχαριστώ πολύ. Ακόμα όμως δεν καταλαβαίνω γιατί να μην παίξει το αρχικό στο httpd.conf. Πέρα απο το αν είναι global ρυθμίσεις. Ας πούμε οτι δεν με ενοχλει που ειναι global και οτι σε αυτο τον σερβερ θελω να ισχυει αυτο για ολα τα site. Γιατι δεν δουλευει ? Τι λαθος εχω κανει? Η χρήση του <IfModule mod_rewrite.so> μέσα στο httpd.conf που έχεις το rule σου αλλά και το συντακτικό είναι λάθος, σβήσε τα παρακάτω <IfModule mod_rewrite.so> ..... <IfModule mod_rewrite.so> Ανεξαρτήτως του ότι δεν έπρεπε να το χρησιμοποιήσεις εκεί, γενικότερα να γνωρίζεις πως το <IfModule mod_xxxxx> κλείνει με </IfModule>. Παρόλα αυτά σβήσε τα από το rule σου στο httpd.conf. Πάμε παρακάτω. Έλεγξε ότι τo mod_rewrite.so ήδη είναι ήδη ενεργοποιημένο by default στο httpd.conf σου, κάπου πιο ψηλά θα βρεις τη σειρά LoadModule rewrite_module modules/mod_rewrite.so (αν είναι commented αφαίρεσε το # από την αρχή) Πάντως γενικότερα έχει λάθος τακτική το rule σου γιατί είτε μπεις με contact.html είτε με contact σκέτο πάλι ανοίγει και με τα δύο URLs, δηλαδή δε "διαγράφει" το .html Καλό θα ήταν να κάνεις Rewrite με τους κανόνες που σου έγραψα παραπάνω για να ανοίγει μόνο χωρίς extension και αν βάλεις extension στο URL να το "διαγράψει" από το URL αντί να το αφήσει. Δηλαδή στο httpd.conf σου <Directory "c:/Apache24/htdocs/" > RewriteEngine On ## Για καταλήξεις .html ## RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^ %{REQUEST_URI}.html [NC,L] ## Για καταλήξεις .php ## RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [NC,L] </Directory> Επεξ/σία 24 Απριλίου 2018 από The King 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα