2012-04-12 3 views
0

J'utilise mod_rewrite pour transmettre des identifiants à mon application web sous la forme:mod_rewrite ne fonctionne pas avec des noms de répertoire

http://clipi.ca/1W 

Je suis l'identification de ces avec un simple regex:

RewriteCond %{REQUEST_URI} ^/([0-9a-zA-Z]+)$ 
RewriteRule ^(.*)$ /index.php?urlid=%1 [L,QSA] 

... ce qui fonctionne bien dans la plupart des cas. Cependant, j'ai remarqué que lorsque l'identifiant est le nom d'un répertoire, la réécriture échoue et Apache retourne un index de répertoire!

Comment puis-je arrêter ce comportement et appliquer la règle de réécriture aux répertoires également? (Notez que dès qu'un fichier réel dans un répertoire est référencé, la condition de réécriture échoue et ce n'est pas un problème.)

Répondre

0

Je pense que je l'ai peut-être compris moi-même: Apparemment, Apache ajoutera une barre oblique demande que mapper aux répertoires du système de fichiers avant applique les règles de réécriture. C'est un peu bête, imo, mais en ajoutant un slash en option à mon regex conditionnelle:

RewriteCond %{REQUEST_URI} ^/([0-9a-zA-Z]+)/?$ 

... il semble fonctionner! Cependant, la solution idéale serait d'obtenir Apache à et non à d'ajouter cette barre oblique initiale. Si quelqu'un sait comment faire cela, affichez-le ici et je vous donnerai la réponse crédit.

Questions connexes