在RewriteCond匹配中使用变量

时间:2016-11-10 13:26:41

标签: .htaccess mod-rewrite url-rewriting

我在两个环境中运行一个网站:生产和开发。

每个服务器都有一个vhosts.conf文件,用于设置环境变量。其中一个变量是要使用的正确子域。

vhosts.conf (开发服务器)

RewriteRule .* - [E=DEV_OR_WWW:dev]

vhosts.conf (生产服务器)

RewriteRule .* - [E=DEV_OR_WWW:www]

我还有一个.htaccess文件,在两台服务器上都是相同的。我正在尝试将旧域名重写为新域名,同时保留子域名,如下所示:

的.htaccess

RewriteCond "%{HTTP_HOST}" "%{ENV:DEV_OR_WWW}\.olddomain\.com" [NC]
RewriteRule "^/(.*)"  "http://%{ENV:DEV_OR_WWW}.newdomain.com/$1" [L,R=301]

但上面的RewriteCond不起作用。 %{ENV:DEV_OR_WWW}wwwdev不匹配,并且未应用该规则。如何使用变量来匹配HTTP_HOST?

如果您需要更多详细信息,或者我的问题不清楚,请询问。

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

RewriteCond %{ENV:DEV_OR_WWW} ^(.+)$
RewriteCond %1.olddomain.com ^(www|dev)\.olddomain\.com$ [NC]
RewriteRule /(.*) http://%1.newdomain/$1 [L,R=301]