比较Query_String和现有文件

时间:2013-06-26 18:09:26

标签: mod-rewrite

我需要检查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,这种方式不起作用。

任何想法? 感谢。

1 个答案:

答案 0 :(得分:0)

我最近和%{REQUEST_FILENAME}有同样的“问题”。 %{REQUEST_FILENAME}根据docs引用:

  

匹配的文件或脚本的完整本地文件系统路径   请求,如果这已经由服务器确定   REQUEST_FILENAME被引用。否则,例如在使用时   虚拟主机上下文,与REQUEST_URI相同的值。取决于   AcceptPathInfo的值,服务器可能只使用了一些前导   REQUEST_URI的组件,用于将请求映射到文件。

因此,如果这是虚拟主机设置,您可能需要使用%{DOCUMENT_ROOT}来引用完整路径,如下所示:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f