将<img/>标记指向由PHP动态生成的图像?

时间:2009-04-30 12:11:15

标签: php mod-rewrite

是否可以将图像重定向到动态生成的图像(使用PHP)?

我有一个动态创建的图像,它有一个扩展名“.PHP”(显然),该服务器不受我的控制。所以我想将“somename.jpg”(在我的服务器上)重定向到“remoteserver / dynamicimage.php”(在我不能控制的某个远程服务器上),以便我可以立即将其链接为<img src="somename.jpg"/>和动态显示生成的图像。

如果可能,请告诉我。

5 个答案:

答案 0 :(得分:2)

尝试在.htaccess文件中添加类似的内容

RewriteEngine on
RewriteRule ^(.*)\.jpg$ /scripts/$1.php

答案 1 :(得分:2)

浏览器会跟踪图像的重定向。创建一个名为“somename.jpg”的php文件并添加:

<?php
header('Location: http://www.otherserver.com/image.php');

在.htaccess文件中使用Apache指令ForceType告诉服务器将.jpg文件作为php处理:

<Files somename.jpg>
    ForceType application/x-httpd-php
</Files>

如果你真的不需要.jpg扩展名,只需调用somename.php文件。

您也可以使用mod_alias来完成此操作,但我还没有尝试过:

Redirect somename.jpg http://www.otherserver.com/image.php

这也会出现在.htaccess文件中。

答案 2 :(得分:2)

标头功能控制HTTP标头,浏览器使用它来确定文件类型(或者在任何情况下都应该。)它可以用来告诉浏览器脚本正在生成要下载的图像文件,而不是HTML脚本输出:

header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename="somename.jpg"');

答案 3 :(得分:1)

可能会导致HTTP重定向:

RewriteEngine on
RewriteRule ^somename\.jpg$ http://remoteserver/dynamicimage.php [L]

另一种方法是使用proxy(请参阅P flag),以便您的服务器请求远程资源并将其传递回客户端。

答案 4 :(得分:0)

另一个更复杂但令人难以置信的强大方法是编写一些处理程序代码,该代码会为此本地图像位置URL激活。

这个将从外部URL获取数据并输出具有正确mime类型的数据。

您还可以根据可行的方法编写一些缓存此数据的代码。

通过这种方式,您永远不会泄露图像的真实位置,甚至可以使用一些秘密凭据,例如logindata或第三方Cookie,这些凭据不应出现在您的网站上。

所有这些都很难在apache配置中简单地配置重定向。如果url会泄露私人信息,我们会做这样的事情。