Те же правила для нескольких каталогов в Apache? - PullRequest
3 голосов
/ 27 марта 2009

У меня есть 2 субдомена, которые используют те же правила, как показано ниже:

<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>

Как видите, правила одинаковы в обоих контейнерах. Как я могу указать эти правила в одном контейнере? Сначала я подумал об использовании этого:

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

Но разве нет способа сделать это более чистым способом, которого мне не хватает?

Edit: Мне не нравится способ DirectoryMatch, потому что, когда у меня будет больше каталогов, регулярное выражение будет не поддерживаться.

Ответы [ 2 ]

8 голосов
/ 27 марта 2009

поместить правила перезаписи в отдельный файл, например. rewrite.conf и включают это так нравится

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

<Directory /srv/project/sites/admin.project.hu/htdocs/>
  Include rewrite.conf
</Directory>
1 голос
/ 27 марта 2009
<DirectoryMatch ^/srv/project/sites/(?:admin\.)?project\.hu/htdocs/$>

Мне это кажется довольно чистым ...

...