2012-12-20 89 views
10

我已经安装在我用下面的htaccess域的根CMS到index.php:htaccess的重定向所有requestes除了子文件夹

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

这需要照顾友好的URL的重定向一切的index.php 。我的问题是,我有一个有另一个CMS的子文件夹。我需要将子文件夹的请求重定向到正确的文件夹,而不是index.php。

我试过,但它似乎下列不工作

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(sub-folder) 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

谁能帮助?

感谢

回答

15

你应该正确验证,如果请求的URI匹配的子文件夹

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !/subfolder 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

在任何情况下,前两个的RewriteCond的意思是:如果请求的文件名不是一个文件或目录。这意味着,如果您所引用的文件位于子文件夹中,并且子文件夹位于您的文件根目录中,则无需执行任何操作。

如果仍然无法工作,使日志可以帮助你:

RewriteLog "/web/logs/mywebsite.rewrite.log" 
RewriteLogLevel 9 
RewriteEngine On 

避免这种日志生产

使用的程度将显着减慢你的Apache服务器的高值!仅在调试时使用大于2的级别的重写日志文件!

+0

不知何故,这是行不通的:/ – jribeiro

+0

我的坏。工作正常 – jribeiro

相关问题