2012-06-07 67 views
0

我需要通过.htaccess使用动态图像生成,以防万一请求的图像不存在但有一件事对我来说不清楚.....如果我在.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?

回答

1

从Web服务器的角度来看,在浏览器的地址栏上直接输入URL或者浏览器看到资源被引用的结果一个<img>标签并执行请求以获取它。 (这里唯一的区别是一个会有一个HTTP referer头文件集,另一个不会,但这与您的情况无关)

这两种情况都会导致您想要的内容,它将请求重写为该网络服务器并传递到PHP脚本处理程序,将(希望)返回您的图像。所以你的假设是正确的。

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

在客户端(通过HTML,Javascript),它们应该像处理静态资源一样工作(抛开缓存考虑因素,因为我们不知道脚本在这方面的处理方式)。