2015-10-15 67 views
0

我有域www.domain.com,并有图像www.domain.com/data/photos/*.*。我想,是访问该镜像文件(包括虚拟主机和屏蔽 - 即我不想要的网址被改变,我想有虚拟子域网址。),因为该网址http://img.domain.com/*.*掩盖重定向到另一个文件夹超过根

我的专业网站上/data/web/domain.com/web/*.*

可以在/data/web/domain.com/sub/*.*中创建子域名。

我想这一点,但它不工作:

DocumentRoot /data/web/domain.com/sub 
ServerName domain.com 
ServerAlias img.domain.com 
Alias /img /data/web/domain.com/web/data/photos 

也试过约5解决方案在这里SO,但没有为我工作。 问题在哪里?

编辑:

这是我目前的虚拟主机的设置:

DocumentRoot /data/web/domain.com/web 
ServerName www.domain.com 
ServerAlias domain.com 
ServerAlias img.domain.com 

我试图把它添加到.htaccess文件:

RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^img.domain.com [NC] 
RewriteRule ^(.*)$ http://www.domain.com/data/photos/$1 [R,L] 

这是工作,但它正在更改网址,当我输入fe http://img.domain.com/image.jpg它在浏览器中更改为http://www.domain.com/data/photos/image.jpg

总之;我想要输入http://img.domain.com/image.jpg来显示位于/data/web/domain.com/web/data/photos/image.jpg的文件内容。

如何防止URL的这种变化?

回答

0

您可以使用

RewriteRule "/(.*)\.(jpg|gif|png)$" "http://img.domain.com/$1.$2" [P] 

相反的:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^img.domain.com [NC] 
RewriteRule ^(.*)$ http://www.domain.com/data/photos/$1 [R,L] 

根据apache RewriteRule documentation

注:mod_proxy的必须按顺序使用该标志的启用。

EDITED

我已经找到了解决方案! 试试这个:

RewriteCond %{ENV:REDIRECT_FINISH} !^$ 
RewriteRule^- [L] 
RewriteCond %{HTTP_HOST} ^img.domain.com$ [NC] 
RewriteRule ^(.*)$ /data/photos/$1 [L,E=FINISH:1] 

的前两行帮助您防止无限循环。

+0

这会做一些非常不同的事情。另外我不想使用mod_proxy,我在同一个域。当你输入'http:// img.domain.com/image.jpg'来显示'/ data/web/domain.com/web/data/photos/image.jpg'文件的内容时,我想要。 – Legionar

+0

我已更新我的帖子,希望这会对你有所帮助。对不起,我的第一个无用的答案。 –

+0

当然我尝试删除'R',但它不会帮助。那么它什么都不会做。 – Legionar

相关问题