2009-09-28 61 views
1

我想基於子域進行mod重寫。如何獲取子域並將其附加到我的新域的末尾?子域作爲mod_rewrite中的變量

例子:

RewriteCond %{HTTP_HOST} ^users\.example\.com$ 
RewriteRule ^(.*)$ http://www.example.com/?subdomain=[variable for sub]  [L] 

如何獲得 '用戶' 進入[變量分]從上RewriteCond

回答

4

匹配存儲爲%N,所以你可以這樣做:

RewriteCond %{HTTP_HOST} ^(users)\.example\.com$ 
RewriteRule ^(.*)$ http://www.example.com/?subdomain=%1 [L] 
+1

這很好。但是我有一些在.htaccess文件中使用域名切換的條件和規則。那些看起來像.dev .stage .test環境。而使RewriteCond在每個上面都是非常有害的。我可以在請求開始時設定一個條件嗎?製作R..R - [E = domain:%1]之後,R..R redirectLink {ENV:domain}不起作用。我應該如何從RewriteRule中的變量中以正確的方式得到它? – lazycommit 2013-03-28 14:04:33

0

Greg的答案只有一個子域(用戶),我需要一個通配符重寫規則(所有子域),所以我用以下內容:

RewriteEngine on 

RewriteCond %{HTTP_HOST} ^([\w\d]+)\.example\.com$ 
RewriteRule ^(.*)$ http://example.com/?subdomain=%1&path=$1 [NC,L,QSA] 

或反向代理:

RewriteCond %{HTTP_HOST} ^([\w\d]+)\.example\.com$ 
RewriteRule ^(.*)$ http://%1.backendserver.com:3001/$1 [L,P,QSA]