【问题标题】:Redirect list of subdomains to new URL将子域列表重定向到新 URL
【发布时间】:2022-01-23 18:48:40
【问题描述】:

我在 oldsite.example 上有很多子域,我想 301 重定向到 newsite.com。然而,一些子域应该保留在oldsite.example,并且重定向的子域不遵循正则表达式模式,使得通配符无关紧要。

我想要一个表达式,我可以在其中编写一个类似sub1,page,boop 的列表,它将为以下所有内容设置重定向

sub1.oldsite.example -> sub1.newsite.example
page.oldsite.example -> page.newsite.example
beep.oldsite.example -> beep.newsite.example

【问题讨论】:

  • 您对此有何疑问?您是否尝试过任何方法来解决您的问题?

标签: .htaccess redirect subdomain


【解决方案1】:

这里有一个重写规则可以用来做到这一点:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(sub1|page|boop)\.oldsite\.example$ [NC]
RewriteRule ^/?(.*)$ https://%1.newsite.example/$1 [R=301,L,QSA]
  • RewriteEngine on启用重写规则,只需要在.htaccess中使用一次
  • RewriteCond 指定激活重写规则之前需要满足的条件
  • %{HTTP_HOST} 是域名
  • (sub1|page|boop) 捕获组中的子域列表
  • [NC] - 不区分大小写
  • ^/?(.*)$ 将这些子域上的每个页面与捕获组匹配
  • https://%1.newsite.example/$1 新 URL 替换条件和规则中的捕获组
  • [R=301] - 301 永久重定向
  • [L] - 最后一个重写规则(这样其他人就不会在这个匹配后被触发)
  • [QSA] - 查询字符串追加 - 保留 URL 上的所有参数

【讨论】:

  • 这里不需要QSA标志,因为默认情况下会保留查询字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多