2009-03-27 6 views
3

J'ai 2 sous-domaines qui utilisent les mêmes règles, comme on le voit ci-dessous:Mêmes règles pour plusieurs répertoires dans Apache?

<Directory /srv/project/sites/project.hu/htdocs/> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)\?*$ index.php?route=$1 [L,QSA] 
    SetEnv config default,local 
    Order allow,deny 
    allow from 192.168.0.0/16 
</Directory> 

<Directory /srv/project/sites/admin.project.hu/htdocs/> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)\?*$ index.php?route=$1 [L,QSA] 
    SetEnv config default,local 
    Order allow,deny 
    allow from 192.168.0.0/16 
</Directory> 

Comme vous pouvez voir les règles sont les mêmes dans les deux conteneurs. Comment puis-je spécifier ces règles dans un seul conteneur? Au début, je pensé à utiliser ceci:

<DirectoryMatch ^/srv/project/sites/(?:(?:admin\.project\.hu)|project\.hu)/htdocs/$> 
... 
</DirectoryMatch> 

Mais est pas là une façon de le faire d'une manière plus propre que je suis absent?

Éditer: Je n'aime pas la méthode DirectoryMatch, car lorsque j'aurai plus de répertoires, l'expression régulière deviendra impossible à maintenir.

Répondre

7

mettre les règles de réécriture dans un fichier séparé, par exemple. rewrite.conf et include comme si elle

<Directory /srv/project/sites/project.hu/htdocs/> 
    Include rewrite.conf 
</Directory> 

<Directory /srv/project/sites/admin.project.hu/htdocs/> 
    Include rewrite.conf 
</Directory> 
+0

Merci, voilà ce que je cherchais! –

1
<DirectoryMatch ^/srv/project/sites/(?:admin\.)?project\.hu/htdocs/$> 

Cela semble assez propre pour moi ...

Questions connexes