2013-06-24 39 views
0

我想將變量追加到我的子域中。 Apache mod_rewrite可以解析一個子域來確定使用哪個虛擬主機條目嗎?apache mod_rewrite規則解析或拆分子域以查找虛擬主機條目

我需要保持我的通配符SSL證書中,所以我鎖定在以下子域格式:

https://subdomain.testing.mydomain.com 

我想因爲雖然對我的PHP庫的版本測試的子域更大的靈活性。如果我可以將更多信息傳遞到子域名而不僅僅是名稱,那將是非常好的。例如:

https://subdomain-option1-option2.testing.mydomain.com 

我寫了一個PHP腳本解析整個主機名和翻出$選項1和子域$ 1選項。然後,我使用這些值來配置我的php庫的哪個版本來導入和運行代碼。問題是我不想爲子域和option1和option2的每個可能的組合硬編碼虛擬主機條目。我只想讓Apache識別連字符分隔的子域的第一部分,並使用它來查找虛擬主機條目並在其目錄中執行索引文件。

我需要的URL在頁面請求中保持不變。 Apache mod_rewrite規則中的正則表達式需要檢測第一個子域,並提取第一個連字符(如果有的話)的所有內容,然後使用該值查找相應的虛擬主機條目。有沒有人做過這樣的事情,或者這是Apache mod_rewrite可能無法處理的情況?

回答

0

RewriteCond的正則表達式中,您可以在想要捕獲的部分HTTP_HOST上放置括號。這將設置數值變量(%1%2%3等),然後可以插入到重寫規則的替換字符串:

RewriteCond %{HTTP_HOST} ^([a-z0-9]*)[\-]+[a-z0-9\-]+[\.]testing[\.]mydomain.com [NC] 
RewriteRule (.*) /var/www/sites/%1$1 [L,QSA]