我想设置所有图像引用(实际上只是对特定文件夹的引用),
e.g。 mywedomain.com/images/myimage.jpg
,其中mywebdomain.com/images/myimage.jpg
实际上指向mycdn.com/images/myimage.jpg
。
但是在代码/标记本身中保留内部引用。我想知道如何处理这个问题?
THX!
答案 0 :(得分:0)
这取决于它是否在同一台服务器上,而不是你应该如何处理它。
如果它位于同一台服务器上,并且位于文档根目录中,则使用mod_rewrite
进行重写最简单。
在主目录.htaccess
文件中:
RewriteEngine on
RewriteBase /
RewriteRule ^/images/(.+)$ /mycdn.com/images/$1 [L]
如果它不在文档根目录中,或者在其他服务器上,则重定向可能更容易。
RedirectMatch ^/images/(.+)$ http://mycdn.com/images/$1
虽然这在客户端会很明显,但如果他们正在查看请求日志。如果您希望它是透明的,那么您可以在服务器上代理请求。
创建一个PHP文件(或你使用的其他语言,你提到LAMP,因此PHP)。
<?php
$reqImage = $_GET['image'];
$mimeTypes = array('gif' => 'gif', 'jpg' => 'jpeg', 'jpeg' => 'jpeg',
'png' => 'png');
$matches = array();
if (preg_match("/^[-a-zA-Z0-9_]+\.(gif|jpg|png)$/", $reqImage, $matches)) {
header('Content-Type: image/' . $mimeTypes[$matches[1]]);
@readfile("http://mycdn.com/images/" . $reqImage);
} else {
header('HTTP/1.0 404 Not Found');
}
exit;
请注意,在提供图像时需要传递Internet media type,因为Apache期望与PHP文件不同,并且通常会为您处理。