【发布时间】:2011-10-25 21:06:29
【问题描述】:
我有一个网站,上面有这样的网址:
http://mysite.com/image1.jpg
我的服务器使用 php 重定向到包含实际文件的子域,如下所示:
header('Location: http://images.mysite.com/image1.jpg');
这几乎适用于所有用途,例如在 img 标签中或在本地保存文件时。对于这些目的,这两个 url 基本上是等效的。但是,当我访问带有图片上传器(如 tumblr 或 imgur)的网站时,我尝试上传第一个 url,但失败(显示“上传照片时出错”或“不支持图片格式,或图片已损坏。”) .
有没有办法让这个工作?我尝试发送不同的状态标题,但它们没有帮助。
编辑:
按照建议,我可以通过 htaccess 重定向或打开文件并发送内容来完成此操作。这可以正常工作,除非我不希望当用户将文件用于其他目的时发生这种情况,例如将其嵌入到 img 标签中。这是因为我的 images.mysite.com 域是一个用于托管我的图像内容的 cdn,如果我必须从我的 Web 服务器中保留内容,它就会破坏它的目的。而且 htaccess 不可行,因为我想在请求第一个 url 时运行一些 php 脚本。
如果我能以某种方式检测到它何时通过文件上传器被使用,那么我可以单独处理其他情况。但我认为我无法检测到这一点,不是吗?
编辑 2(解决方案):
好的,我做了一个巧妙的妥协:事实证明,上传请求通常在标头中没有“accept_charset”参数,而嵌入请求有。使用它,我可以检测何时请求上传图像,然后下载该图像并发送内容。不是一个坚如磐石的解决方案,但它工作得很好。谢谢大家!
【问题讨论】:
-
它们对于最终用户来说可能是等价的,但图片上传者需要的是文件,而不是重定向。
标签: php image redirect upload http-headers