2014-01-20 60 views
0

我有一臺服務器server.example.com,它通過ProxyPass/ProxyPassReverse到8080在端口80上服務於Tomcat,在server.example.com:8001的同一個盒子上有一個Drupal站點。如果我在港口進入8001明確,Drupal站點的行爲不當,但我需要,使之獲得通過server.example.com/blog,所以我爲/blog http://server.example.com:8001這對於Drupal站點正常供應的初始頁面創建一個ProxyPass/ProxyPassReverse,但一旦上了形式Drupal的的主頁是填寫並提交,哪些職位到/,該網站更改爲Tomcat的網站,大概是因爲/相對於在崗當前主機是不是:8001。我怎樣才能獲得ProxyPass/blog保持持久的,因此,所有後續請求保持:8001 VirtualHost(Drupal站點)內?Apache 2.2 Mod Proxy ProxyPass行爲

有一件事我試圖用mod_rewrite的:

RewriteCond %{HTTP_REFERER} /^blog/.*$ 
RewriteRule (.*) %{HTTP_HOST}:8001/$1 [L,P,NC] 

但是,這確實什麼都沒有,據我可以告訴。我希望如果最初的請求是針對/博客,那麼推薦人也是如此,我可以在8001虛擬主機上保留請求。也許有人可以解釋爲什麼這是有缺陷的。

回答

1

您很可能遇到的問題是,Drupal返回的文檔包含生成的鏈接,它們全部引用/而不是/blogmod_rewriteproxypass不對文檔內容做任何事 - 它們僅對請求(或者在ProxyPassReverse的情況下,在諸如返回內容中的位置:標頭的鏈接上)採取行動。

爲了讓這個通常希望爲/在不同的URL操作要安裝的應用程序,你需要要麼:

(一)配置應用程序要注意適當的基本網址。許多應用程序都包含這樣的設置,以便準確支持您所描述的情況。

(b)安裝某種過濾代理的可修改退回文檔的內容。對於Apache來說,mod_proxy_html就是爲了做到這一點。這包含在Apache 2.4本地,但可能需要單獨安裝2.2。

+0

這聽起來很正確,其實我發現在settings.php配置文件,該文件確實在A)部分的$ BASE_URL設置,但我認爲更需要做的事情。現在我得到一個白色的index.php頁面,這讓我覺得包含沒有被發現。我很可能會將你的標記標記爲已接受,但首先要鼓勵更多答案。感謝您的意見,我認爲這非常準確。 – GL2014