2013-02-06 143 views
0

我試圖想出一個重寫規則,它可以在我支持的所有環境(qa,stage,dev等)的conf文件中工作,所以常見的重寫條件和規則來「統治」他們。Apache基於環境的子域重寫

實施例:

  • subdomain.environment.site.com應該重定向到environment.site.com
  • 除了 subdomain.site.com應該重定向到www.site.com。
  • 它也不應該轉發時,其中一些請求的URI有東西。

這是據我已經來了:

RewriteCond %{HTTP_HOST} subdomain.$ENV.site.com [NC] 
    RewriteCond %{REQUEST_URI} !/images 
    RewriteCond %{REQUEST_URI} !/blah 
    RewriteCond %{REQUEST_URI} !/blah-foo 
    RewriteCond %{REQUEST_URI} !/foo-bar 
    RewriteRule ^/(.*)   http://$ENV.site.com/$1 [L,R=302] 

明顯$ ENV是行不通的,但我有一個具有宏大的時間去尋找合適的正則表達式在所有環境中開展這項工作。

+0

所有可以被替換爲一個:'RewriteCond%{REQUEST_URI}!/(images | blah | foo)[NC]' –

回答

0

多一點研究,手搖和啤酒給了我解決方案。

它可能不漂亮,但它的工作原理。回答如果有人試圖這樣做,他們在這裏有一些開始。

RewriteCond %{HTTP_HOST} ^(sub)(\.)((?:[a-z][a-z]+))(\.)(site)(\.)(com) [NC] 
    RewriteCond %{REQUEST_URI} !/image 
    RewriteCond %{REQUEST_URI} !/blah 
    RewriteCond %{REQUEST_URI} !/foobar 
    RewriteCond %{REQUEST_URI} !/barfoo 
    RewriteRule ^/(.*)   http://%3.%5.%7/$1 [L,R=302]