2013-08-29 74 views
3

我有兩個Apache Web服務器,一個公共和一個私人。要求是用戶將訪問域名並從域名獲取內容。域名應該爲空,並且只包含用於用戶認證的.htaccess文件。 所有的請求都會來到http://public.com:60001/,並被apache重寫爲http://private:60001/。用戶無法直接訪問域名私有域名,但域名託管的服務器與其連接。私有公有領域重定向在阿帕奇

爲了實現這一目標,我更新了PUBLIC域名的虛擬主機,包括這個:

<Directory "/wwwroot/public.com"> 
    RewriteEngine on 
    RewriteBase/
    RewriteRule ^(.*)$ http://private:60001/$1 [P] 
    ProxyPassReverse http://private:60001/ 
</Directory> 

這樣做後,頁面加載,但有兩個問題:

  1. 所有網站頁面的html代碼中的鏈接將以http://private:60001/的形式顯示,因此當用戶點擊鏈接時,他們將得到404錯誤(因爲他們沒有連接)。有沒有辦法讓Apache重寫這些鏈接到http://public.com:60001/
  2. Ajax調用不起作用 - 生成404錯誤。我想,也許是因爲同樣的問題,作爲在點1

感謝您的幫助

回答

1

的mod_proxy是不會解決您的問題。您將需要從專用中刪除您內容中的所有主機名。因此不是像鏈接:

<a href="http://private:60001/something/"> 

他們需要的樣子:

<a href="/something/"> 

否則,你可以看看mod_proxy_html,這實際上將裂傷頁面的內容(而不是僅僅請求)和將內容中的鏈接映射到私有鏈接,以便鏈接到公共鏈接。有關示例,請參閱this link

從本質上講,沿着線的東西:

ProxyHTMLLogVerbose On 
ProxyHTMLLinks a    href 
ProxyHTMLLinks link   href 
ProxyHTMLLinks form   action 
ProxyHTMLLinks script   src for 
ProxyHTMLLinks img    src longdesc usemap 
ProxyHTMLLinks iframe   src 

ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \ 
      onmouseover onmousemove onmouseout onkeypress \ 
      onkeydown onkeyup onfocus onblur onload \ 
      onunload onsubmit onreset onselect onchange 

ProxyHTMLURLMap url\(http://private:60001([^\)]*)\) url(http://public:60001$1) Rihe 
+0

非常感謝。我不知道mod_proxy_html。 – user2730623