如何修改整个网站,不包括几个子目录?

时间:2009-01-21 22:43:48

标签: mod-rewrite

我遇到了一个小问题。我有一个很好的设置,mod重写了对网站的所有请求 - 唯一的是它还重写了我不想包含的目录。

我在.htaccess文件中使用此代码:

RewriteEngine on
RewriteRule ^([^/\.]+)/?$ index.php?section=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?section=$1&page=$2 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?section=$1&page=$2&split=$3 [L]

理想情况下,我希望能够排除两个目录 - 访问/和编辑/ - 编辑/还需要拥有自己的一套规则:

RewriteRule ^([^/\.]+)/?$ index.php?action=$1 [L]

我可以通过直接链接到任一目录中的.php文件来解决这个问题,但这并不理想。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

使用RewriteCond

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(access|edit)/
RewriteRule ^([^/\.]+)/?$ index.php?section=$1 [L]
...

(这是未经测试的,但它应该很接近)

答案 1 :(得分:1)

另一种想法(也未经测试):

RewriteEngine on
RewriteRule ^/access/ - [L]
RewriteRule ^/edit/([^/\.]+)/?$ /edit/index.php?action=$1 [L]
... (other rules)

这样可以避免在每条规则之前重复RewriteCond