.htaccess:RewriteCond 中的反向引用来检查文件是否存在?

.htaccess:RewriteCond 中的反向引用来检查文件是否存在?

我正在尝试匹配以下类型的 URL:

http://www.example.com/image/12345

然后我想检查这个文件是否存在:

http://www.example.com/files/image_12345.jpg

如果是的话,我想重写 URL 以指向该文件。

如果没有的话我想重写 URL 以指向我的图像生成脚本:

http://www.example.com/img_gen.php?id=12345

以下是我目前得到的信息:

RewriteCond %{REQUEST_FILENAME} ^/image/([0-9]+)$
RewriteCond %{DOCUMENT_ROOT}/files/images_%1.jpg !-f
RewriteRule ^image/([0-9]+)$ img_gen.php?id=$1 [L]

RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^image/([0-9]+)$ /files/images_$1.jpg [L]

但我得到的只是 404。

答案1

如果你不能弄清楚你的重写规则正在做什么,你应该启用RewriteLog并增加详细程度:

RewriteLogLevel 3
RewriteLog "/var/log/rewrite.log"

这应该会给你提供一个良好的起点,以便进一步调查到底出了什么问题。

相关内容