2014-01-16 21 views
1

我一直在試圖解決過去幾個小時的問題。我非常渴望幫忙!將另一個域重定向到現有的drupal安裝子目錄

我有兩個領域:

rd1.example.com/drupal 
rd2.example.com 

我有一個rd1.example.com/drupal/ Drupal安裝

此外,我開始在一個網址別名創建於Drupal內容:rd1.example .COM/Drupal的/ RD2/

我想要做的是使用第二個網站我的Drupal安裝中指向具體內容:

rd2.example.com -> rd1.example.com/drupal/rd2/ 

我不希望它是一個重定向,而是一個內部隱藏的重定向。用戶會認爲他們在rd2.example.com上。

我已將rd2.example.com切換到指向安裝drupal的目錄。我一直試圖在drupal的.htaccess上編輯rewriterules,但沒有運氣。任何幫助是極大的讚賞。這是我的規則到目前爲止:

#Existing settings 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} !^rd2\.example\.com [NC] 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule^index.php [L] 

#New rules to accomodate for rd2.example.com 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^rd2\.example\.com$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/rd2%{REQUEST_URI} -f 
RewriteRule .* /rd2/$0 [L] 
+0

中解釋'/ drupal/rd2 /'目錄是否真的存在?或者它應該是由drupal提供的虛擬路徑? –

+0

這是一個由drupal提供的虛擬路徑。內部的drupal知道應該指向哪個頁面。它不物理存在 – Michael

回答

1

Drupal依賴於服務器變量來處理它的請求。這意味着當你在內部重寫/rd2/$0時,drupal不知道該怎麼做。您需要改爲從rd2子域中反向代理*。所以離開Drupal的事情是這樣的,然後在rd2.example.com文檔根目錄,添加:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^rd2 [NC] 
RewriteRule ^(.*)$ http://rd1.example.com/drupal/rd2/$1 [L,P] 

如果你有mod_proxy的裝在服務器上這隻會工作,否則什麼也不會發生。 Mod_proxy只能通過服務器的配置打開。你也可以設置從虛擬主機配置爲RD2子域的反向代理:

ProxyPass/http://rd1.example.com/drupal/rd2/ 
+0

Yeap像我的魅力一樣工作。我使用了proxypass,因爲它似乎比較安全,而不是在apache的配置文件中激活配置。 – Michael

相關問題