我正在嘗試將所有請求重定向到domain.com/drupal,包括/ drupal中的所有子目錄。如何創建從子目錄到根域的重定向?
我已經看到了幾個答案,告訴我如何用.htaccess完成與此相反的事情,但沒有辦法這樣做。我曾嘗試在.htaccess-
RewriteRule /drupal/* ^/(.*)
以及上述的幾種變化以下行的基礎上,這些問題的答案,但還沒有任何運氣。
謝謝!
我正在嘗試將所有請求重定向到domain.com/drupal,包括/ drupal中的所有子目錄。如何創建從子目錄到根域的重定向?
我已經看到了幾個答案,告訴我如何用.htaccess完成與此相反的事情,但沒有辦法這樣做。我曾嘗試在.htaccess-
RewriteRule /drupal/* ^/(.*)
以及上述的幾種變化以下行的基礎上,這些問題的答案,但還沒有任何運氣。
謝謝!
試試這個行:
RewriteRule /drupal/(.*) /$1 [QSA,L]
讓我得到這個直...您的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瞭解更多信息。
不,ensignavenger想要它。你描述了大多數人要求的「正常」版本。 – Paul 2010-04-26 14:59:13
你的意思是他將drupal移動到DocumentRoot?好的,那麼你的回答是正確的,保羅。不過,'RewriteEngine On'和關於'AllowOverride'的東西仍然適用。 – orithena 2010-04-26 15:03:09
謝謝,我試圖做的相反 - 該網站最初建立在/ drupal目錄,然後我將所有文件移動到根目錄,這工作正常,除了圖像和內容中的一些鏈接仍指出到舊/ Drupal路徑。我能夠使用Web主機提供的重定向管理器來配置重定向!您提供的答案非常全面,並提供了很好的信息! – ensignavenger 2010-04-29 18:06:58
謝謝,我能夠使用我的虛擬主機提供的重定向管理器來配置它(我曾嘗試過,它不工作,但後來我找到了一些額外的幫助)。你提供的代碼看起來像我正在尋找的東西,所以雖然我無法測試它,但我會爲它投票。 (下次我需要這樣做時,我會嘗試一下:) – ensignavenger 2010-04-29 18:08:52