.htaccess多个规则和例外

时间:2013-09-19 14:02:13

标签: php apache .htaccess mod-rewrite

我有一个.htaccess文件,它有多个规则使网址看起来“漂亮”。 这是文件:

RewriteEngine On

RewriteRule ^property/([^/]*)/?([^/]*)/?$ /property.php?ID=$1&Image=$2 [L]
RewriteRule ^property$ /property.php [L]

RewriteRule ^enquire/([^/]*)/?([^/]*)/?$ /enquire.php?ID=$1&Data=$2 [L]
RewriteRule ^enquire$ /enquire.php [L]

RewriteRule ^contact/?$ /contact.php [L]
RewriteRule ^home/?$ /index.php [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_URI} ^/(property|property/.*|enquire|enquire/.*|contact|contact/.*|home|home/.*)$
RewriteRule ^([^/]*)$ /custompages.php?ID=$1 [L]

第一套规则适用于propertyenquirecontacthome。 如果网址不是其中之一,例如www.foo.com/about-us,我希望它调用文件custompages?ID=about-us,但是使用此代码,它无效。我是使用.htaccess文件的新手,我无法弄清楚自己的问题。

1 个答案:

答案 0 :(得分:0)

你的最后一条规则是不正确的。将其更改为:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /custompages.php?ID=$1 [L]