Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω  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 μπορω να δω τη σελιδα

Τι έχει παει στραβά? Νομίζω αυτή η λύση είναι στανταρ, οπότε δε μπορώ να καταλάβω γιατί δεν παίζει. Τι δεν έχω καταλάβει? 

Ευχαριστώ

Δημοσ. (επεξεργασμένο)

Το πήγες πολύ βαθειά, απλά δημιούργησε ένα  .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.

Επεξ/σία από The King
Δημοσ.

Δουλεψε κατευθείαν . Σε ευχαριστώ πολύ. 

Ακόμα όμως δεν καταλαβαίνω γιατί να μην παίξει το αρχικό στο httpd.conf. Πέρα απο το αν είναι global ρυθμίσεις. Ας πούμε οτι δεν με ενοχλει που ειναι global και οτι σε αυτο τον σερβερ θελω να ισχυει αυτο για ολα τα site. Γιατι δεν δουλευει ? Τι λαθος εχω κανει? 

 

Δημοσ. (επεξεργασμένο)
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>

 

Επεξ/σία από The King
  • Thanks 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...