2013-07-02 63 views
0

我在网站上有一堆htaccess规则设置。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 。

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

回答

0

使用END标志而不是L标志将绝对终止重写规则。

+0

它给内部服务器错误。 – mrN

0

当遇到行sites时,必须进行配置以省略所有规则。

这里是您的解决方案:

RewriteEngine On 
RewriteRule ^(sites) - [L] 

#Rest of your rules