我正在尝试匹配以下类型的 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"
这应该会给你提供一个良好的起点,以便进一步调查到底出了什么问题。