当2个条件URL重写规则同时触发时发生致命错误

时间:2011-03-20 21:45:18

标签: apache .htaccess url url-rewriting apache2

亲爱的朋友们, 尝试使用重写规则重写图像,该规则只应在存在两个条件时触发:图像以IMG开头,或者更好IMG-,其次文件应该存在。

好网址:IMG-folder/file.jpg在水下拍摄了丑陋的网址图片。

  

以下代码在没有设置条件时,以及仅设置第二个!-f条件时,但在两个规则共存时不起作用。为什么是这样?非常感谢您的想法/代码/评论。感谢

Q1。我有点困惑:第一个条件实际上是必要的吗?因为我说的只是将IMG -....文件重写为水下难看的网址。

Q2。为什么下面的代码出错了,然后两个条件都被触发了?

RewriteCond %{REQUEST_URI} ^IMG.*$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^IMG-(.+)_w(.+)_h(.+).jpg$ imgcpu\.php\?src=$1\.jpg&w=$2&h=$3 [L]

1 个答案:

答案 0 :(得分:1)

%{REQUEST_URI},始终包含完整的请求路径。另一方面,RewriteRule的第一个参数是相对的。如果您将%{REQUEST_URI}与指定起始位置的模式匹配,则^,您还应该包含前导斜杠。

RewriteCond %{REQUEST_URI} ^/IMG.*$

我对虚拟URL的形式也略感困惑。 IMG在典型图像网址中出现两次吗? /IMG-folder/IMG-12_w34_h56.jpg是否为有效的虚拟文件名?