2012-02-16 16 views
-1

在共享網絡託管上,我的軟件支持多個域(所有域指向相同的public_html根目錄)。每個域都有自己的畫廊(在畫廊目錄中)。由於多個域不能在所有站點的同一目錄中擁有自己的資源(例如圖像),因此我的根目錄與每個HTTP主機名匹配。這裏是目錄結構的樣子......Apache Rewrite:%{HTTP_HOST}目錄中的域專用圖庫圖像

/的public_html/

/public_html/.htaccess

/的public_html /畫廊/

/public_html/www.example1.com /gallery/topic_x/image.png

/public_html/www.example2.com/gallery/topic_y/image.jpg

/public_html/www.example3.com/gallery/topic_z/image.gif

的請求......

http://www.example1.com/gallery/topic_x/image.png

...需要重寫到...

/public_html/www.example1.com/gallery/topic_x/image.png

這需要使用.htaccess文件完成,如上所述,HTTP主機匹配目錄中沒有.htaccess文件(/public_html/www.example1.com/.htaccess不存在)。

我一直在試圖用下面的許多修改...

RewriteEngine on 
RewriteCond %{ENV:REDIRECT_STATUS} !200 
RewriteRule ^(gallery)(/.+\.(gif|jpg|png))$ %{HTTP_HOST}$1$2 [L,NC] 

...沒有成功。

我很樂意作出任何澄清以及投票並接受所需工作解決方案的答案。

回答

1

這一次爲我的作品:

RewriteRule ^(gallery/.+\.(gif|jpg|jpeg|png))$ /%{HTTP_HOST}/$1 [L,NC] 

如果你想 - 你可以添加額外的檢查改寫,只要這樣的最終圖像存在(雖然我沒有測試過這一點):

RewriteCond {%DOCUMENT_ROOT}/%{HTTP_HOST}/$1 -f 
RewriteRule ^(gallery/.+\.(gif|jpg|jpeg|png))$ /%{HTTP_HOST}/$1 [L,NC] 

但即使你的模式應該工作(至少它通過測試) - 也許.htaccess沒有啓用..或者你忘了激活重寫引擎(RewriteEngine On)?

我也建議(或之後)啓動發動機前,加入這一行:

Options +FollowSymLinks 

Options +SymLinksIfOwnerMatch 

一些共享主機只能與第二工作,對於一些第一次就足夠了。

+0

感謝發佈! – John 2012-02-17 07:06:14