如何使mod_rewrite规则使用子域名重写URL?

如何使mod_rewrite规则使用子域名重写URL?

我想要做的是这样的:

转发请求从http://agency1.company.com到: https ://appname.company.com/appname/login.jsp ?版权名称=权限1

它不需要是一个活的代理; 它可以只是一个元刷新types的东西或基本的URL向前。 似乎这将是一个普遍的scenerio,但我不能在互联网上find一个例子。 很多关于重写URI的例子,但是关于整个URL重写的例子并不多(正如我在上面所做的那样)。

为此,您可以使用Back-references。

RewriteEngine On RewriteCond %{HTTP_HOST} ([^\.]+)\.domain\.com [NC] RewriteRule ^(.*)$ https://appname.company.com/appname/login.jsp?agencyName=%1 [R=301,L] 

但是,请注意,一旦301被遵循,这将最终重新定向,如果redir发生在HTTP上,则只使用下面的块。

 RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ([^\.]+)\.domain\.com [NC] RewriteRule ^(.*)$ https://appname.company.com/appname/login.jsp?agencyName=%1 [R=301,L] 

%1指的是RewriteCond行中的第一个正则expression式“捕获”,如果你要利用多重点%2等等。

你可以在HTTP_HOST值上使用RewriteCond来做到这一点。 在“ Apache URL重写指南”中有几个这种用法的例子。 你会做这样的事情:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^[^.]+\.company\.com$ RewriteRule (.*) https://appname.company.com/$1?agencyName=%1 [R,L,QSA] 

这是未经testing的,可能不会按原样工作,但应指向正确的方向。