htaccess重定向所有子域名+www到具有CNAME,vhosts和htaccess的域名

7

我有一个相对简单的问题需要知道的人帮助,但我找不到所需的答案。我已经转移到vps并尝试自己配置vm。我需要重定向:

  1. domain.com - 默认
  2. www.domain.com -> domain.com
  3. *.domain.com -> domain.com

我已经完成了针对www ->非www的.htaccess,所以我有:

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

添加了A记录和CNAME记录:

  • www - @
  • * - @

添加了虚拟主机:

  • ServerAlias www.domain.com *.domain.com

我这样做对吗(CNAME、虚拟主机、.htaccess),还有更简单的方法吗?

您能帮我重定向*.domain.com到domain.com吗(猜测是在.htaccess中)?


你想要重定向哪些子域名?还是想要重定向所有子域名? - CS GO
所有子域名,例如wwww2.domain.com / asda.domain.com -> 全部重定向到domain.com(不带www) - mozg
3个回答

6
将 *.domain.com 重定向到 domain.com。 只需将您的规则更改为以下内容:
RewriteEngine On

RewriteCond %{HTTP_HOST} ^[^.]+\.(domain\.com)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L,NE]

这个能够处理多级子域名吗?比如 this.sorta.domain.com? - Austin R Kowitz
为此,请将第一个条件设置为:RewriteCond %{HTTP_HOST} ^.+?\.(domain\.com)$ [NC] - anubhava
@Leo:发布一个新问题,包含所有细节,我会参与回答。 - anubhava

4
在您的Apache配置文件中,将服务器别名设置为*.domain.com,并放在服务器名称下方:
ServerName domain.com
ServerAlias *.domain.com

将所有内容改为非www:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$   [NC]
RewriteRule ^ http://domain.com/  [L,R]

从头到尾讲解www:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$   [NC] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^ http://www.domain.com/  [L,R] 

0
创建 .htaccess 文件并粘贴以下内容。
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$   [NC]
 RewriteRule ^ http://domain.com/  [L,R]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接