.htaccess将root重定向到子文件夹

时间:2010-02-21 21:21:06

标签: .htaccess mod-rewrite

我希望mod_rewrite将所有请求重定向到非现有文件和文件夹,并将所有对主文件夹(“root”)的请求重定向到子文件夹。所以我把它设置成这样:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC,OR]
RewriteCond %{REQUEST_URI} / [NC]
RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA]

不幸的是,它不起作用:如果我请求example.com/public/它重定向到我的处理脚本(所以重定向到我的/ subfolder / index.php?app = public)虽然文件夹“public”存在。 请注意,请求domain.com/正确重定向到my / subfolder / index.php

为什么?

1 个答案:

答案 0 :(得分:7)

它不起作用,因为你的最后一个条件不仅仅匹配根,而是匹配其中的任何uri,这基本上就是一切。请尝试以下方法:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA]

请注意,不需要[NC],因为您没有尝试匹配任何字母,因此不需要“无案例”。

希望它有所帮助。