2009-08-16 1 views
0

Ceci est mon fichier .htaccess mais cela ne fonctionne pas. Aucune URL n'est redirigée. Aidez moi.Problème avec les règles mod_rewrite dans le fichier .htaccess

RewriteEngine on 
RewriteRule ^home index.php 
RewriteRule ^contactus index.php?file=c-contactus 
RewriteRule ^course_registration index.php?file=c-course_registration 
RewriteRule ^ncplhpage index.php?file=c-ncplhpage 
RewriteRule ^scplhpage index.php?file=c-scplhpage 
RewriteRule ^corporatetra index.php?file=c-corporatetra 
+0

Qu'avez-vous essayé exactement? – Gumbo

Répondre

0

Vous devrez peut-être définir une base de réécriture.

Cependant, je soupçonne que le problème est le manque d'un/avant index.php dans tous les cas, à savoir

RewriteEngine on 
RewriteRule ^home /index.php 

En tant que point de côté, avez-vous pensé combiner vos directives en une seule directive comme:

RewriteRule ^(home|contactus|course_registration|ncplhpage|scplhpage|corporatetra)$ /index.php?file=c-$1 

? Vous pouvez prendre un peu plus loin et remettre sur la vérification du nom dans votre fichier index.php lui-même, à savoir

RewriteRule ^([_a-z]+)$ /index.php?file=c-$1 

Gardez à l'esprit que votre index.php devrait vérifier que le $ _GET [ « fichier » ] qui est demandé est valide. Tout simplement parce que vous avez des URL publiques comme/contactus ne signifie pas que quelqu'un ne peut toujours pas taper /index.php?file=c-contactus directement (essayez-le!). Cela signifie qu'ils peuvent donc entrer /index.php?file=c-../../../../etc/passwd par exemple. Donc, assurez-vous que votre index.php fait aussi une vérification de la santé. Ce sera bon à la fois pour la sécurité, mais aussi pour éviter d'encoder vos URL dans votre fichier .htaccess.