开发者

Are conditionals in ModRewrite possible?

I have a si开发者_开发百科mple piece of ModRewrite that channels everything to index.php if it's not an existing file or directory.

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

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

Now I want to add a exception when the domain contains certain strings, but I don't know how to to add this. I was thinking of adding the following.

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

UPDATE, I found a partial solution If I put it like this:

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]

It works, but with a bug. Because index.php exists, the second part of the conditional still goes to index.php instead of project.php when a plain domain is called like http://probouw.localhost/

Any ideas?


For anyone that might need this, the solution was:

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]


Perhaps using OR would help (NC=NotCase sensitive by the way)?

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


In reference to your partial solution, if you change the last part does this work?

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜