2009-11-08 10 views
0

Actuellement, j'ai la configuration dans mon htaccess afin que example.com/dept/noc va à: example.com/index.php?dept=dept & n = noc utilisantconditions htaccess + rewrite url

RewriteEngine On 
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA] 
RewriteCond %{SERVER_PORT} 80 

J'ai un dossier appelé télécharger, comment pourrais-je me assure que url rewriting est pas en vigueur (une exception) pour le/upload/dossier, depuis

example.com/upload/file.doc ne fonctionne pas?

+0

Ajouter un rewritecond avec l'éxéption? – axk

Répondre

3

Essayez:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/upload/.* 
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA] 
RewriteCond %{SERVER_PORT} 80 
2

Une approche plus générale serait d'ajouter une condition de ne pas réécrire si l'URL correspond directement un fichier ou répertoire existant:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

De cette façon, vous ne avoir à maintenir une liste de dossiers/upload,/images etc dans vos règles de réécriture. Si file.doc n'existe pas dans/upload, la réécriture sera faite cependant.

1

Vous pouvez comparer le match des groupes particuliers comme celui-ci:

RewriteCond $1 !=upload 
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA] 

Notez que != indique une comparaison lexicographique mais vous pouvez utiliser une expression régulière ainsi:

RewriteCond $1 !^upload$ 
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]