【发布时间】:2011-10-02 14:25:00
【问题描述】:
好的,我开始怀疑这是否可能。我一直在阅读 htaccess 教程和示例,但似乎无法正常工作。
我有一个脚本可以创建在朋友网站目录中运行的动态图像。我可以访问 /,但我使用的实际目录在 /mydir/ 中。为了显示图像,它们通过 PHP 输出到 png。我有以下 RewriteRule 设置来获取请求的文件名并运行 PHP 脚本。每个文件名代表一个单独的文件,其中包含 display.php 脚本中使用的序列化对象
RewriteRule ^(.*)\.jpg$ display.php?file=$1
这部分工作正常,但是如果有人请求一个不存在的文件,它只会抛出 PHP 错误,因为脚本被调用但没有对象可供使用。
我现在想要做的,完全失败的是,让它检查文件是否存在于 ./Cache/ 目录中,然后像往常一样运行脚本,如果不存在,那么服务器可以抛出一个标准的 404。
我尝试过类似的东西
RewriteCond %{REQUEST_URI} ^(.*)\.jpg$
RewriteCond %{DOCUMENT ROOT}/img/Cache/%1.jpg -f
以及 REQUEST_URI、REQUEST_URL、SCRIPT_FILENAME、SCRIPT_NAME 等的其他组合。我似乎无法想出正确的变量和正则表达式来处理这个问题,所以我向你们寻求帮助。最大的问题是不知道每个变量中的实际情况,所以我可以看到哪里出错了。我会为了某种 var_dump() 而杀人,
【问题讨论】:
-
请提供: 1) 带有您要重写的图像的示例 URL; 2) 图片的存储位置(相对于网站根目录); 3) 据我了解
display.php位于网站根目录? 4) .htaccess 文件位于您拥有所有这些规则的位置。 -
@LazyOne 抱歉,我以为我包含了该信息。我想我不应该在凌晨 3 点发帖。 .htaccess 和 display.php 存储在 www.website.net/mydir/img/ 中,而我需要检查的文件在 www.website.net/mydir/img/Cache/ 中。要检查和重写的示例 URL 是 www.website.net/mydir/img/66bb_1b5b6.jpg。我需要知道Cache文件夹中是否存在该文件,如果存在,则按照OP中的说明重写,如果不存在,则让服务器抛出404。
标签: php .htaccess file-exists