Apache基于环境重写子域

时间:2013-02-06 00:17:43

标签: regex apache mod-rewrite

我正在尝试提出一个重写规则,该规则适用于我支持的所有环境(qa,stage,dev等)的conf文件,因此需要一个常见的重写条件和规则来“统治”它们。

示例:

  • 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不起作用,但我正在努力找到一个正确的正则表达式,以使其在所有环境中都能正常工作。

1 个答案:

答案 0 :(得分: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]