【问题标题】:How can I redirect subdomains in .htaccess to www. with generic parameters?如何将 .htaccess 中的子域重定向到 www。使用通用参数?
【发布时间】:2020-01-02 22:58:25
【问题描述】:

我正在为以下问题寻找可行的解决方案:

我有很多域具有相同的网站。

当有人访问 www.domainname.tld 时,应该重定向到 http://www.domainname.tld

当有人访问 subdomain.domainname.tld 时,应该重定向到 http://www.domainname.tld

当有人访问 domainname.tld 时,应该重定向到 http://www.domainname.tld

============================

我尝试了以下方法:

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) http://www.%{SERVER_NAME}/$1 [L,R=301]

============================

问题:输入 subdomain.domainname.tld 时会重定向到 www.subdomain.domainname.tld

============================

我希望它在 .htaccess 中。

我已经搜索过了,可惜没有成功。

如果有人能提供解决方案,我会很高兴:)

============================

在您的帮助下,我能够将代码更改为:

RewriteCond %{HTTP_HOST} ^([^/.]+)\.(.*)\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%2\.%3/$1 [L,R=301]

我只需要最后一次更改 -> 它不应该指向http://domain.tld -> 我更喜欢http://www.domain.tld

我尝试了不同的尝试来在目标中添加 www - 但没有任何成功。

我以匿名解决方案结束,这对我来说效果很好:

RewriteCond %{HTTP_HOST} !^www\.[^.]+\.[^.]+$
RewriteCond %{HTTP_HOST} ([^.]+\.[^.]+)$
RewriteRule (.*) http://www.%1/$1 [L,R=301]

感谢所有有时间阅读和帮助的人!

【问题讨论】:

标签: .htaccess redirect


【解决方案1】:

没有办法删除所有子域,但是可以获取域名的最后两部分:

RewriteCond %{HTTP_HOST} !^www\.[^.]+\.[^.]+$
RewriteCond %{HTTP_HOST} ([^.]+\.[^.]+)$
RewriteRule (.*) http://www.%1/$1 [L,R=301]

【讨论】:

  • 这适用于将 subdomain.domain.tld 重定向到 -> domain.tld - 谢谢。输入时保留 www.domain.tld 也可以正常工作。唯一不起作用的是在输入 www.subdomain.domain.tld -> 时,它会保留整个 URL。谢谢。
  • @Telefonix 更新后的答案应该适用。
  • 谢谢@Anonymous 我决定使用你的解决方案 :) 似乎我也可以在证书准备好后轻松切换到 https :)
  • 没问题。很高兴我能帮上忙。
猜你喜欢
  • 2018-03-27
  • 2015-03-12
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 2014-06-27
  • 2019-01-23
  • 2015-05-19
  • 1970-01-01
相关资源
最近更新 更多