使用htaccess从子域中的根目录读取图像

时间:2013-11-23 19:53:44

标签: apache .htaccess mod-rewrite

我有一个像example.com这样的域,根目录是web。 我创建了一个子域happy.example.com,其中目录位于名为happy的web文件夹之外,并将其连接到happy.example.com。

我的网页树看起来像

happy
web/images

因此根目录的所有图像都存储在(web / images)

example.com/images

因此,图像的完整路径可以是

example.com/images/me.png 

现在我创建了一个我称之为的Sudbdomain:

happy.example.com 

我想做的是如果我输入

happy.example.com/images/me.png
然后我应该能够看到这张照片。 所以我需要将所有图像文件夹链接到web中根目录的子域。 我希望你们有我的问题。 我想我应该有一个htaccess文件,包含所有有趣的东西在快乐文件夹中?

Cheerz

1 个答案:

答案 0 :(得分:2)

由于两个域的两个文档根目录不相互连接(一个在另一个内部或相同),因此您需要重定向或代理,或者使用脚本。

要重定向最简单,但它会更改浏览器位置栏中的网址:

Redirect 301 /images http://example.com/images

或使用mod_rewrite:

RewriteEngine On
RewriteRule ^images/(.*)$ http://example.com/images/$1 [L,R=301]

要代理,您需要加载mod_proxy,如果您使用的是虚拟主机或托管服务,情况并非总是如此。但是你可以使用mod_rewrite中的P标志来执行此操作:

RewriteEngine On
RewriteRule ^images/(.*)$ http://example.com/images/$1 [L,P]

最后一个选项是将所有图像请求路由到脚本,如php脚本或其他东西。脚本本身返回图像:

RewriteEngine On
RewriteRule ^images/(.*)$ /load_image.php?image=$1 [L]
那么你会有类似的东西:

<?php
    header("Content-type: image/jpeg");
    readfile('../web/images/' . $_GET['image']);
?>

显然,您需要检查扩展程序并根据图像类型返回正确的内容类型。