我们网站上显示的远程URL图像

时间:2017-01-27 16:48:26

标签: php .htaccess get

我正在使用Youtube视频IMG。

示例链接:https://i.ytimg.com/vi/aSVpBqOsC7o/hqdefault.jpg

我想:http://cdn.mywebsite.com/vi/aSVpBqOsC7o/hqdefault.jpg

如何使用PHP和.htaccess进行操作?

1 个答案:

答案 0 :(得分:1)

apache http服务器附带了很棒的模块,其中包括代理模块。它提供了您正在寻找的内容,而无需使用某种脚本语言或类似语言:

简单直接的方法是在您自己的域名空间内代理整个网址https://i.ytimg.com/vi/

ProxyRequests off
ProxyPass /vi/ https://i.ytimg.com/vi/

有关文档,请参阅:https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass

另一个提供更多灵活性的apporach是在重写模块中使用代理模块:

RewriteEngine on
RewriteRule ^/?vi/([^/]+)/(.+)$ https://i.ytimg.com/vi/$1/$2 [L,P]

有关文档,请参阅:http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

与第一种方法相同的效果也可以通过仅限于主机配置的符号来实现:

ProxyRequests off
<Location /vi/>
    ProxyPass https://i.ytimg.com/vi/
</Location>

两种上层方法都可以在http主机配置中使用,或者,如果确实有必要,可以在动态配置文件(.htaccess样式文件)中使用。通常,您应该始终更喜欢在主机配置中放置此类规则。 .htaccess样式文件增加了复杂性,众所周知容易出错,难以调试,它们确实会降低http服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。