Возможны ли условные выражения в ModRewrite? - PullRequest
1 голос
/ 17 июня 2011

У меня есть простой кусок ModRewrite, который направляет все в index.php, если это не существующий файл или каталог.

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

RewriteRule ^(.*)$ /index.php/$1 [L]

Теперь я хочу добавить исключение, когда домен содержит определенные строки, ноЯ не знаю, как добавить это.Я думал добавить следующее:

RewriteCond %{HTTP_HOST} ^(aanmelding|keyclamps|probouw)
RewriteRule ^(.*)$ /project.php/$1 [L]

ОБНОВЛЕНИЕ, я нашел частичное решение Если я скажу так:

RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# If not an old project
RewriteCond %{HTTP_HOST} !^(aanmelding|keyclamps|probouw)

# forward it to index.php
RewriteRule ^(.*)$ /index.php/$1 [L]

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

# forward it to project.php
RewriteRule ^(.*)$ /project.php/$1 [L]

Это работает, нос ошибкой.Поскольку index.php существует, вторая часть условия все еще идет в index.php вместо project.php, когда простой домен называется как http://probouw.localhost/

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 18 июня 2011

Для тех, кому это может понадобиться, решение было:

RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# If not an old project
RewriteCond %{HTTP_HOST} !^(aanmelding|keyclamps|probouw)

# forward it to index.php
RewriteRule ^(.*)$ /index.php/$1 [L]

# Else 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_URI} =/

# forward it to project.php
RewriteRule ^(.*)$ /project.php/$1 [L]
0 голосов
/ 17 июня 2011

В отношении вашего частичного решения, если вы измените последнюю часть, это работает?

# forward it to project.php
RewriteRule ^/?$ /project.php [L]
RewriteRule ^(.*?)$ /project.php/$1 [L]
0 голосов
/ 17 июня 2011

Возможно использование OR поможет (NC = NotCase чувствителен)?

RewriteCond %{HTTP_HOST} ^.*aanmelding.*$ [NC,OR]
RewriteCond %{HTTP_HOST} ^.*keyclamps.*$ [NC,OR]
RewriteCond %{HTTP_HOST} ^.*probouw.*$ [NC]
...