htaccess:无法检查动态文件是否存在!

时间:2011-06-10 05:56:51

标签: apache .htaccess mod-rewrite conditional filepath

我已经通过htaccess文件编写了一个动态缩略图创建器,以查看所请求的文件是否存在,以及是否将用户发送到php页面来创建它。我的htaccess文件如下所示:

# Check the formatting (this works)
RewriteCond %{SCRIPT_FILENAME}%{QUERY_STRING} /([a-zA-Z0-9-]+).(jpg|gif|png)w=([0-9]+)&h=([0-9]+)(&c=(true|false))

# Only forward to thumbnail.php if file doesn't exist
#RewriteCond %{REQUEST_FILENAME} !-f   #this works but not for the correct filename!
RewriteCond %1-%2-%3-%4-%6.jpg !-f     # Doesn't work!!!

# If file doesn't exist, send here: (this works)
RewriteRule ^.*$ thumbnail.php?file_name=%1&type=%2&w=%3&h=%4&c=%6

我对文件存在的检查似乎不起作用...使用%{REQUEST_FILENAME}的旧版本有效,但这不是我需要检查的正确文件名。我已经验证新文件%1-%2-%3-%4-%6.jpg具有正确的输出,但不会触发条件!

基于此网址:

this-is-the-image-name.gif?w=200&h=100&c=true

htaccess文件应检查此文件是否存在:

this-is-the-image-name-gif-200-100-true.jpg

缩略图和htaccess文件都在同一个文件夹中,但此文件夹未知,无法进行硬编码。它需要完整的检查路径吗?如果是这样,我如何获得完整路径,但使用我的自定义文件名?

用这个把头发拉出来...... 帮忙!谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用PHP脚本替换传统的“404错误”页面:

ErrorDocument 404 thumbnail.php

然后,您可以使用PHP检索请求的URL:

$url = $_SERVER["REQUEST_URI"];

可以使用preg_match函数检索参数。