我知道这个问题看起来有点吓人,但我找不到更好的方式来问。
我有几个网站,有很多常见的图像。因此,我决定从一个来源发布通用文件,以避免使用更多的磁盘空间。但我也不希望访问者知道它,并希望显示所有内容从自己的域名发布。
我可以通过请求http://domain1.com/image.jpg从http://domain2.com/image.jpg获得图像吗?我尝试了一些组合,但都不成功!
谢谢!
如果资源在同一个地方,你可以很容易地配置你的web服务器从不同的位置提供服务,例如,Apache的虚拟主机配置应该像这样:
<VirtualHost *:80>
DocumentRoot /var/path/to/images
ServerName domain1.com
ServerAlias domain2.com
</VirtualHost>
根据附加信息
更新如果您希望从domain1.com/images
和domain2.com/images
提供图像,您可以通过两种方式实现。
1)为同一个镜像文件夹创建两个别名的虚拟主机:
2)创建一个符号链接,例如:<VirtualHost *:80> DocumentRoot /var/path/to/domain1.com/files ServerName domain1.com Alias /images/ /var/path/to/images </VirtualHost> <VirtualHost *:80> DocumentRoot /var/path/to/domain2.com/files ServerName domain2.com Alias /images/ /var/path/to/images </VirtualHost>
$ ln -s/var/path/to/images/var/path/to/domain1.com/files
$ ln -s/var/path/to/images/var/path/to/domain2.com/files
在上述两种情况下,您都在映射相同的位置,这只是一种不同的方法。
我会尝试将图像请求路由到一个php文件,该文件知道如何将请求映射到正确的url,然后发送正确的http头并包含图像。
假设domain1.com和domain2.com在同一个本地网络上,那么我建议创建到共享图像文件夹的符号链接,这样它们就可以在每个站点中访问,就好像它们是本地目录一样。你需要在你的htaccess文件中启用符号链接,但这比使用mod-rewrite要麻烦得多。
如果它们不在同一个网络上,那么使用301重定向到替代域上的相同文件名的mod重写应该可以做到这一点。
另一件值得一提的事情是,通常从第二个域名提供图像是一种很好的做法。例如,如果你去Yahoo,你会发现他们的图像是从yimg.com
的子域提供的,即使你已经导航到yahoo.com。这是优化站点性能的良好实践,因为浏览器和web服务器都限制了它们可以从同一域同时下载的文件数量,因此将单个页面上的请求拆分为多个域,可以同时提供更多文件,并减少每个服务器上的负载。因此,您最好的选择可能是将图像放在一个中心位置,以便在它们自己的域下为所有域提供服务。