2014-10-27 52 views
1

我想加載private的網站的特定子域,而無需創建新的虛擬主機(不創建和重複所述虛擬主機配置)以下面的方式,:的Apache2:mod_rewrite的圓形rewritting

  • 的用戶寫入priv.mydomain.com
  • mod_rewrite追加/ priv到URL而不重定向。
  • Alias指令獲取/私法和負載/ other_system_path /私人
  • private頁面加載但用戶看的URL沒有變化。

我當前配置如下(適當的虛擬主機內):

Alias /priv /other_system_path/private 

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^priv\.mydomain\.com$ 
RewriteRule (.*) /priv [PT] 

PT標誌是,如果我沒有錯,用於重複URL映射的過程中,這變成再次獲得RewriteRule,因爲priv.仍保留在URL中。

我該如何做到這一點?

+0

嘗試添加'RewriteCond%{IS_SUBREQ} false' – Cheery 2014-10-27 22:07:13

+0

哇,它就像一個魅力。如果你知道的話,把它寫成接受它的答案。有些解釋是值得歡迎的。無論如何,我在瀏覽器中搜索「/ priv」。 – 2014-10-27 22:11:48

+0

'無論如何,我在瀏覽器中「/ priv」,但你不想看到它? – Cheery 2014-10-27 22:16:54

回答

1

的PT標誌是,如果我沒有錯,對於重複URL 映射,它變成了被再次重寫規則中的過程,因爲 私法。留在URL

您可以通過添加下列條件

RewriteCond %{IS_SUBREQ} false 

根據手冊

IS_SUBREQ跳過的子請求規則

包含文本「真「如果當前處理的請求是 是一個子請求,否則爲」false「。子請求可能由 生成,模塊需要解析其他文件或 中的URI才能完成其任務。

ps:你需要,因爲我認爲,RewriteRule ^/?(.*)$ /priv/$1 [PT],以便任何請求將被轉換爲正確的,而不僅僅是別名的'根'。