Mod rewrite 使用-f条件重写COND错误

Mod rewrite 使用-f条件重写COND错误,mod-rewrite,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 我认为这样

如果文件存在于此文件夹中,我想将我网站的所有请求重定向到文件夹“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]
RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(.*)$ /site/$1 [R=301,L]
但我在日志中发现了以下错误:

[warn] RewriteCond: NoCase option for non-regex pattern '-f' is not supported and will be ignored.
你知道会出什么问题吗?在这个错误上,我没有从谷歌得到太多


注:我使用bluehost网站,mod_rewrite处于活动状态

我认为这应该可以做到:

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]
RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(.*)$ /site/$1 [R=301,L]
如果需要转到site.html的所有未知请求,则应使用:

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

我希望重定向到文件夹站点,而不是site/site.html,所以第一个应该可以。我得到了大量“[warn]RewriteCond:NoCase选项不支持非正则表达式模式'-f',将被忽略。”。并在重定向次数上出错,结果url类似于:。我以为我应该停止未来的重写?这就是为什么我在我的示例中做了相反的事情,在尝试重定向到文件site/site.html之前测试该文件是否存在。问题来自于我的服务器不支持的选项+FollowSymLinks。。。我改用SymLinksIfOwnerMatch,它与我的代码和你的代码一起工作,没有循环。谢谢