使用-f条件重写Cond错误

时间:2013-01-09 18:45:00

标签: mod-rewrite

如果该文件夹中存在该文件,我想将所有请求重定向到我的网站到'site'文件夹。

例如:如果我的网站包含文件/foo/foo.html,/bar/bar.html和/site/site.html 我想要以下重定向:

/foo/foo.html -> /foo/foo.html
/bar/bar.html -> /bar/bar.html
/site/site.html -> /site/site.html
/site.html -> /site/site.html

我认为这样的事情可以解决问题:

Options +FollowSymLinks
RewriteEngine On
# Check if the requested path is not a real file or folder
RewriteCond %{DOCUMENT_ROOT}/site/%{REQUEST_URI} -f
# if not a real file/folder: myhost.com/blabla -> myhost.com/site/blabla
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/site/$1 [R=301,L]

但是我在日志中得到了这些错误:

[warn] RewriteCond: NoCase option for non-regex pattern '-f' is not supported and will be ignored.

知道可能出现什么问题吗?我没有从谷歌这个错误得到太多...

P.s。:我使用的是bluehost网站,mod_rewrite处于活动状态。

1 个答案:

答案 0 :(得分:1)

我认为这应该可以解决问题:

RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(.*)$ /site/$1 [R=301,L]

如果您需要所有未知请求转到site.html,您应该使用:

RewriteRule ^(.*)$ /site/site.html [R=301,L]