2015-10-15 27 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

相關問題