我有域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
在SO上也试过了5个解决方案,但没有一个对我有用。 问题在哪里?
编辑:
这是我当前的虚拟主机设置:
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]
它正在运行,但它正在更改网址,当我输入f.e 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
的文件内容。
如何防止更改网址?
答案 0 :(得分: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]
前两行可帮助您防止无限循环。