2009-01-21 6 views
1

J'ai un petit problème. J'ai une bonne configuration qui mod réécrit toutes les demandes sur le site - la seule chose est qu'il réécrit également les répertoires dont je ne veux pas être inclus.Comment modifier un site complet en excluant quelques sous-répertoires?

J'utilise ce code dans mon fichier .htaccess:

RewriteEngine on 
RewriteRule ^([^/\.]+)/?$ index.php?section=$1 [L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?section=$1&page=$2 [L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?section=$1&page=$2&split=$3 [L] 

Idéalement, je voudrais être en mesure d'exclure deux répertoires - accès/et modifier/- modifier/doit aussi avoir son propre ensemble de règles:

RewriteRule ^([^/\.]+)/?$ index.php?action=$1 [L] 

Je peux contourner ce problème en reliant directement au fichier .php soit dans le répertoire, mais ce n'est pas idéal.

Un conseil?

Répondre

2

Utilisez RewriteCond

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/(access|edit)/ 
RewriteRule ^([^/\.]+)/?$ index.php?section=$1 [L] 
... 

(Ceci est non testé, mais il devrait être proche)

+0

Oui, ça devrait être proche. Et puis ajoutez un RewriteCond pour le sous-répertoire d'édition aussi. – PEZ

+0

Pas de dés. Je pense que le serveur ignore la condition et va directement à la première règle de réécriture. Je pense que cela doit être lié à la façon dont la règle de réécriture est écrite, mais mon regex est très limitée - même en essayant de trouver un tutoriel approprié. – different

+0

FWIW Je pense qu'il devrait être% {REQUEST_URI} au lieu de $ {REQUEST_URI} –

1

Une idée alternative (également non testé):

RewriteEngine on 
RewriteRule ^/access/ - [L] 
RewriteRule ^/edit/([^/\.]+)/?$ /edit/index.php?action=$1 [L] 
... (other rules) 

qui vous évitera d'avoir à répétez le RewriteCond avant chaque règle.

+0

Oui, c'est définitivement plus élégant. –

+0

La deuxième ligne fonctionne. Mais le serveur utilise toujours les autres règles pour le répertoire edit /. – different

+0

Peut-être essayer une expression régulière moins restrictive? J'aime ^/edit /(.*)$ –

Questions connexes