我有客户的规格。给定一个带有重写模块的 apache Web 服务器,找到一种基于主机标头根域动态重定向的方法。
例如 - 如果请求来自
www.example1.com
重定向到 example1.customersite.com
具有多个级别子域(最多 3 个)的相同内容,如
my.redirect.to.example2.com
应重定向到 example2.customersite.com
。
这可以通过重写模块来完成吗?
我假设这适用于任何 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(临时)重定向。