我需要检查query_string中指定的文件是否存在。 我已经有了这个规则
RewriteCond %{QUERY_STRING} ^src=([^&]+)(.*)$
RewriteCond %1 -f
RewriteRule ^media/resizer/?(?:index\.php)?$ http://cdn.mysite.com/media/resizer/ [NC,R,L,QSA]
在%1中我有文件名的确切路径,我试图在第二行检查是否存在。但它只是检查模式' -f' RewriteLog:
RewriteCond: input='src=/forumsdata/images/avatars/james.jpg&w=120&h=120&zc=1' pattern='^src=([^&]+)(.*)$' => matched
RewriteCond: input='/forumsdata/images/avatars/james.jpg' pattern='-f' => not-matched
RewriteCond%{REQUEST_FILENAME} -f是media / resizer / index.php,这种方式不起作用。
任何想法? 感谢。
答案 0 :(得分:0)
我最近和%{REQUEST_FILENAME}有同样的“问题”。 %{REQUEST_FILENAME}根据docs引用:
匹配的文件或脚本的完整本地文件系统路径 请求,如果这已经由服务器确定 REQUEST_FILENAME被引用。否则,例如在使用时 虚拟主机上下文,与REQUEST_URI相同的值。取决于 AcceptPathInfo的值,服务器可能只使用了一些前导 REQUEST_URI的组件,用于将请求映射到文件。
因此,如果这是虚拟主机设置,您可能需要使用%{DOCUMENT_ROOT}来引用完整路径,如下所示:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f