有没有办法利用重写模块根据主机头根域进行动态重定向

问题描述 投票:0回答:1

我有客户的规格。给定一个带有重写模块的 apache Web 服务器,找到一种基于主机标头根域动态重定向的方法。

例如 - 如果请求来自

www.example1.com
重定向到
example1.customersite.com

具有多个级别子域(最多 3 个)的相同内容,如

my.redirect.to.example2.com
应重定向到
example2.customersite.com

这可以通过重写模块来完成吗?

apache url mod-rewrite url-rewriting
1个回答
0
投票

我假设这适用于任何 URL 路径,并且应该通过重定向保留它。因此,

subdomain.<example>.com/<url-path>
形式的 URL 将被重定向到
<example>.customersite.com/<url-path>

您可以使用 mod_rewrite 执行类似以下操作:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:[^.]+\.){1,3}(example)\.com [NC]
RewriteRule ^ https://%1.customersite.com%{REQUEST_URI} [R=302,L]

HTTP_HOST
服务器变量(使用语法
%{HTTP_HOST}
访问)包含所请求的
Host
标头的值。

这只允许 1 到 3 个子域。域顶点(无子域)或超过 3 个将不会被重定向。

%1
反向引用包含前面条件中捕获子模式的值。在本例中,它仅包含字符串“example”以节省重复。

请注意,这是 302(临时)重定向。

© www.soinside.com 2019 - 2024. All rights reserved.