Author Ad

Mod_rewrite για τον apache


Τι είναι όμως το mod_rewrite?

Πρόκειται για μία λειτουργική μονάδα/ένθεμα (module) του apache (προφέρεται απά – τσε )για χειρισμό ζητούμενων υπερσυνδέσμων σε επίπεδο διαμοιραστή (server-side).

Τα εισερχόμενα URLS φιλτράρονται μέσω διαφόρων κανόνων και όταν γίνει η σύγκριση σε επίπεδο server, τότε αντικαθίσταται ο χαρακτήρας του URL με τον επιθυμητό. Παρακάτω θα δούμε πιο αναλυτικά και με παραδείγματα πως λειτουργεί.

Πλεονεκτήματα του mod_rewrite

Συνηθέστερα, χρησιμοποιείται για να μετατρέψει δύσχρηστα και ακατανόητα URLS σε πιο ευανάγνωστα και κατανοητά. Σαν άμεσο αποτέλεσμα, τα URLS αυτά είναι περισσότερο φιλικά προς τις μηχανές αναζήτησης.

Ένα παράδειγμα:

  • Όχι τόσο φιλικό URL: http://example.gr/user.php?id=5476
  • Πιο φιλικό: http://example.gr/user/5476/
  • Ακόμα καλύτερα: http://example.gr/user/george/

Το τελευταίο βελτιωμένο URL δεν είναι μόνο πιο κατανοητό στον απλό χρήστη αλλά έχει και σημασιολογική έννοια. Είδαμε λοιπόν μία βασική χρησιμότητα του mod_rewrite. Όπως θα δούμε παρακάτω, μπορούμε να επιτύχουμε ακόμα πιο σύνθετα αποτελέσματα με την χρήση κατάλληλων παραμέτρων.

Επεκτείνοντας το παραπάνω παράδειγμα, πρέπει να επισημάνουμε πως ο μετασχηματισμός φιλικών URLs μέσω του mod_rewrite συμβάλλει στην ασφάλεια του ιστότοπου μας. Όπως βλέπουμε, θεωρητικά, ένας κακόβουλος χρήστης μπορεί να περάσει την παράμετρο XY στο id, αποσκοπώντας λανθασμένη λειτουργία του scipt μας.

http://example.gr/user.php?id=ΧΥ

ενώ αντίστοιχα με την χρήση του mod_rewrite δεν θα μπορούσε να αλλάξει καρφωτά την τιμή του id.

http://example.com/user/ΧΥ/

Ενεργοποιώντας το mod_rewrite στον Server

Η ενεργοποίηση του mod_rewrite ή οποιουδήποτε module του apache πρέπει να γινει από το αρχείο καθολικών μεταβλητών httpd.conf (global configuration file)

Οι περισσότεροι hosting providers έχουν ενεργοποιημένη την υπηρεσία. Παρακάτω θα δούμε πως ελέγχουμε αν όντως είναι. Στην περίπτωση που είστε ιδιοκτήτες server, τότε θα πρέπει να ανοίξετε το αρχείο httpd.conf και να αφαιρέσετε το σχόλιο που συμβολίζεται με την δίεση (#) στην εξής γραμμή:

LoadModule rewrite_module modules/mod\_rewrite.so

Παλαιότερες εκδόσεις του Apache 1.3 ίσως χρειαστεί να προσθέσετε την παρακάτω γραμμή αμέσως μετά:

# Only in Apache 1.3 AddModule mod\_rewrite.c

Στην μεταγενέστερη έκδοση 2.0 και μετά δεν είναι απαραίτητο. Μετά τις αλλαγές αυτές, απαιτείται επανεκκίνηση της υπηρεσίας.

Ας δοκιμάσουμε το mod_rewrite

Ο απλούστερος τρόπος να δοκιμάσουμε αν είναι ενεργοποιημένο είναι μέσω της παρακάτω php εντολής.

<?php phpinfo(); ?>

Στην περιοχή των ενθεμάτων που τρέχουν (Loaded_modules) πρέπει να εμφανίζεται το mod_rewrite.

Παραδείγματα χρήσης του mod_rewrite

Νο1)

Το URL σας είναι της μορφής

http://www.example.com/index.php?cat=category&subcat=subcategory

Και εσείς θέλετε να γίνει ως εξής

http://www.example.com/category/subcategory

Η λύση είναι φυσικά με τη χρήση του mod_rewrite προσθέτοντας τον παρακάτω κώδικα στο αρχείο .htaccess

RewriteEngine on
 
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /index.php?cat=$1&subcat=$2 [L]

Νο2)

Το URL σας είναι της μορφής

http://example.com/index.php?page=hello

και θέλετε να γίνει της μορφής

http://example.com/hello.htm

Προσθέστε τον παρακάτω κώδικα στο αρχείο .htaccess

RewriteEngine on
 
RewriteRule ^([^/\.]+).htm$ index.php?page=$1 [L]

Για περισσότερες πληροφορίες διαβάστε στην ιστοσελίδα του apache: http://httpd.apache.org/docs/current/mod/mod_rewrite.html


George Brountzas
Γίνετε επεξεργασία, Παρακαλώ περιμένετε...
+ 22.8

Ο Συγγραφέας

Twitter Facebook Linkedin
Ονομάζομαι Γεώργιος Μπρουντζάς και εργάζομαι ως freelance web developer. Στον ελεύθερο μου χρόνο λατρεύω να γράφω τεχνολογικά άρθρα, βίντεο βοηθήματα που θα βοηθήσουν τον επισκέπτη μέσω των video βοηθημάτων των βασικών αρχών του web development & web design, κλιμακωτά, από τον αρχάριο μέχρι τον πιο προχωρημένο.

Κανενα σχολιο

Αφήστε ένα σχόλιο

You must be logged in to post a comment.