2010-04-26 57 views
0

我正在嘗試將所有請求重定向到domain.com/drupal,包括/ drupal中的所有子目錄。如何創建從子目錄到根域的重定向?

我已經看到了幾個答案,告訴我如何用.htaccess完成與此相反的事情,但沒有辦法這樣做。我曾嘗試在.htaccess-

RewriteRule /drupal/* ^/(.*) 

以及上述的幾種變化以下行的基礎上,這些問題的答案,但還沒有任何運氣。

謝謝!

回答

0

試試這個行:

RewriteRule /drupal/(.*) /$1 [QSA,L] 
+0

謝謝,我能夠使用我的虛擬主機提供的重定向管理器來配置它(我曾嘗試過,它不工作,但後來我找到了一些額外的幫助)。你提供的代碼看起來像我正在尋找的東西,所以雖然我無法測試它,但我會爲它投票。 (下次我需要這樣做時,我會嘗試一下:) – ensignavenger 2010-04-29 18:08:52

0

讓我得到這個直...您的Drupal的安裝在<DocumentRoot>/drupal/。您不想更改drupal安裝目錄,也不想更改您的web服務器配置中的DocumentRoot。您想要將任何請求(例如/foobar.php)重定向到drupal目錄,導致可能爲/drupal/foobar.php。而所有這些都不會將整個東西暴露給用戶。到目前爲止?好吧,我只能假設你有一個Apache網絡服務器,否則.htaccess不會工作...

首先,確保你實際上被允許使用.htaccess,所以檢查相關的AllowOverride指令在你的apache配置。

然後嘗試這種方式在你的<DocumentRoot>/.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/drupal.* 
RewriteRule ^/(.*)$ /drupal/$1 [P] 

的RewriteCond確保您不會遇到一個無限循環。 RewriteRule的第一部分始終是客戶端請求的URL。我們在/drupal/的括號內加上匹配的部分前綴,並強制它通過[P]作爲代理請求,以便apache只會執行內部重定向(而不是向客戶端發送「Document has moved」重定向代碼)。

順便說一句:我沒有測試它。我可能在代碼中存在拼寫錯誤。閱讀http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule瞭解更多信息。

+0

不,ensignavenger想要它。你描述了大多數人要求的「正常」版本。 – Paul 2010-04-26 14:59:13

+0

你的意思是他將drupal移動到DocumentRoot?好的,那麼你的回答是正確的,保羅。不過,'RewriteEngine On'和關於'AllowOverride'的東西仍然適用。 – orithena 2010-04-26 15:03:09

+0

謝謝,我試圖做的相反 - 該網站最初建立在/ drupal目錄,然後我將所有文件移動到根目錄,這工作正常,除了圖像和內容中的一些鏈接仍指出到舊/ Drupal路徑。我能夠使用Web主機提供的重定向管理器來配置重定向!您提供的答案非常全面,並提供了很好的信息! – ensignavenger 2010-04-29 18:06:58