2013-06-19 12 views
0

Apache,如何使一個URL(可以說一個圖像路徑)實際上來自另一個位置。例如,我有像一個URL一個html頁:HTACCESS如何mod_rewrite網站資源文件路徑?

apple.html,與原來的代碼裏面:

<img src="http://www.myoldsite.com/assets/image/apple.jpg" /> 
<img src="http://www.myoldsite.com/assets/image/orange.jpg" /> 

但實際上我想這條道路被重新寫入:

<img src="http://www.mynewsite.com/image/apple.jpg" /> 
<img src="http://www.mynewsite.com/image/orange.jpg" /> 

所以當我訪問apple.html頁面時,圖像應該來自新的位置,而不需要去改變每個文件中的實際代碼。

但實際上我完全弱於.htaccess規則。當我用類似下面,它顯示錯誤:

RewriteEngine On 
RewriteRule http://www.mynewsite.com/image/(.*) /assets/image/$1 [QSA, L] 

我有成千上萬的像這樣的頁面,但我完全陷入與.htaccess規則。
我在想什麼?請幫忙。

回答

0

我假設兩個域指向相同的apache實例?

您好像切換了RewriteRule的參數。語法是:

RewriteRule UrlsMatchingThis ChangeToThis [params] 

所以你的情況我會做這樣的事情:

RewriteRule ^/assets/image/(.*) http://www.mynewsite.com/image/$1 [R,NC,L] 

這所有的請求,即只有頂級域名之後的部分是/資產/圖像/(任何)相匹配。 我已經使用的標誌是

R redirect 
NC Ignore case 
L Last rewrite rule for this request 

您可能需要一個條件添加到RewriteRule這樣的:

RewriteCond %{SERVER_NAME} ^(www\.)?myoldsite\.com$    [NC] 
RewriteRule ^/assets/image/(.*) http://www.mynewsite.com/image/$1 [R,NC,L] 

這隻會重寫你的請求,如果域名是myoldsite.com,有或沒有www

Se http://httpd.apache.org/docs/current/mod/mod_rewrite.html用於記錄重寫模塊。

+0

嗨不幸的是NO。這些域在不同服務器上是可以使用的。不一樣。那麼你的答案仍然有效? –

+0

是的,但它需要在舊服務器上。這些請求將像往常一樣進入舊服務器,並且Apache將重定向到新服務器。 – mogensen

0

啓用mod_rewrite的,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_ROOT目錄:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^(image/.+)$ /assets/$1 [NC,L]