12

我在我的域的根目录中安装了一个 CMS,其中包含以下 htaccess:

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]

任何人都可以帮忙吗?

谢谢

4

1 回答 1

16

如果请求 uri 与子文件夹匹配,您应该正确验证

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

无论如何,前两个 rewritecond 表示:如果请求文件名不是文件或目录。这意味着如果您引用的文件在子文件夹中并且子文件夹在您的 docroot 中,则您无需执行任何操作。

如果仍然无法正常工作,启用日志可以帮助您:

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

避免此登录生产

使用较高的 Level 值会显着降低 Apache 服务器的速度!使用级别大于 2 的重写日志文件仅用于调试!

于 2012-12-20T01:44:35.103 回答