0

我需要通过 .htaccess 使用动态图像生成,以防请求的图像不存在但我不清楚一件事.....如果我在 .htaccess 中使用以下代码:

# Images 
RewriteCond     %{SCRIPT_FILENAME}      !-f
RewriteCond     %{SCRIPT_FILENAME}      !-d
RewriteRule     ^static/images/([-\w]+)/([0-9]+)/([\.-\w]+)$   image_handler.php?area=$1& id=$2&filename=$3 [NC,QSA,L]

仅当从地址栏请求该图像的 url 时才会生成图像(希望这是有道理的),并且我认为如果在 HTML 中调用图像它应该可以工作?

4

1 回答 1

1

从 Web 服务器的角度来看,响应通过直接在浏览器的地址栏上输入 URL 发出的请求或响应浏览器看到资源被<img>标记引用并执行的请求之间没有区别获取它的请求。(这里唯一的区别是一个会设置一个 HTTP referer 标头,而另一个不会,但这与您的情况无关)

这两种情况都会产生您想要的结果,即让网络服务器重写请求并传递给 PHP 脚本处理程序,该处理程序将(希望)返回您的图像。所以你的假设是正确的。

尝试通过其他方式(例如服务器端脚本)访问那些“虚拟图像”是行不通的。您使用这些规则执行的操作是让您的 Web 服务器将来自 HTTP 的请求解释static/images/为应该由您指定的程序提供服务的请求。然后它将使用所述程序的输出来满足请求(在这种情况下image_handler.php)。这些图像永远不会存储或复制到服务器的磁盘或类似的东西上(当然,除非你让脚本这样做)。所以在服务器端,试图在磁盘上的任何位置查找这些图像是行不通的,假设的相应目录结构甚至可能不存在。

在客户端(通过 HTML、Javascript),它们的行为应该就像您处理静态资源一样(缓存考虑除外,因为我们不知道您的脚本在这方面是如何处理的)。

于 2012-06-07T22:53:44.830 回答