【问题标题】:Apache rewrite of subdomain based on environmentApache基于环境重写子域
【发布时间】:2013-02-06 00:17:42
【问题描述】:

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

例子:

  • subdomain.environment.site.com 应该重定向到 environment.site.com
  • except 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 不会工作,但我有一个很好的时间试图找到一个合适的正则表达式来使它在所有环境中工作。

【问题讨论】:

  • 都可以用一个替换:RewriteCond %{REQUEST_URI} !/(images|blah|foo) [NC]

标签: regex apache mod-rewrite


【解决方案1】:

更多的研究、手敲和啤酒让我找到了解决方案。

它可能不漂亮,但它有效。回答所以如果有人试图这样做,他们在这里有某种开始。

    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]

【讨论】:

    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多