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

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

如果可能,请告诉我。

有帮助吗?

解决方案

浏览器会跟踪图像的重定向。创建一个名为“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文件中。

其他提示

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

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

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

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

可能会导致HTTP重定向:

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

另一种方法是使用代理(参见< a href =“http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule”rel =“nofollow noreferrer”> P flag ),以便您的服务器请求远程资源并将其传递回客户端。

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top