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

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

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

我想要做的是这样的:

转发请求 FROM http://agency1.company.com 到: https://appname.company.com/appname/login.jsp?agencyName=agency1

它不需要是实时代理;它可以只是元刷新类型的东西或基本的 URL 转发。这似乎是一个常见的场景,但我在互联网上找不到示例。网络上有很多关于 URI 重写的示例,但关于完整 URL 重写的示例并不多(正如我上面尝试做的那样)。

答案1

为此,您可以使用反向引用。

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

但是,请注意,一旦遵循 301,这将再次重定向,如果要在 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 行中的第一个正则表达式“捕获”,如果您要使用多个点,则 %2 等等将变得可用。

答案2

您可以在 HTTP_HOST 值上使用 RewriteCond 来执行此操作。Apache URL 重写指南。你可以这样做:

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

这尚未经过测试,并且可能无法按原样工作,但应该可以为您指明正确的方向。

相关内容