htaccess规则不能覆盖以前的规则

时间:2013-07-02 01:58:36

标签: .htaccess url-rewriting

我在网站上设置了一堆htaccess规则。

RewriteEngine On
RewriteBase /
RewriteRule ^google73947f9bfca52abe.html$    google73947f9bfca52abe.html [L]
RewriteRule ^page\/(.*)$ index.php?title=page&r=$1 [L]
RewriteRule ^media\/(.*)$ index.php?title=page&r=$1 [L]

RewriteRule ^admin/$    admin/php [L]
RewriteRule ^index\.html$    index\.php [L]
RewriteRule ^crons/$    crons/ [L]

#I did this to forward request to directory    
RewriteRule ^sites/$    sites/ [L]

#This  is the rule creating problem
#RewriteRule ^sites/([^.]+)$    sites/$1 [L]


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

我希望覆盖那些以site.com/sites开头的规则的所有规则,而不是按照配置的目的转到index.php

每当我转到site.com/sites时,网站都会将我带到site.com/site/?title=sites,但我仍然可以将其作为文件夹进行浏览,但每当我打开一个html文件时就像说test.html一样,它直接带我到在以前的目录中的index.php,假设是。

如何编写让我直接自由浏览的规则?

2 个答案:

答案 0 :(得分:0)

使用END标志而不是L标志绝对会结束重写规则。

答案 1 :(得分:0)

您必须配置为在遇到行sites时省略所有规则。

以下是您的解决方案:

RewriteEngine On
RewriteRule ^(sites) - [L]

#Rest of your rules