在apache中使用裸域,在httpd.conf中的域上没有“www”

令人难以置信的是没有好的教程或简单的参考指南使用裸(无子域)作为主要的在线url,我可以find。

我试图configuration这发生在我的httpd.conf中的Apache。 由于我仍然是这个服务器的一个相对新手,试图弄清楚我自己所能做的就是configuration一些令人讨厌的redirect循环和错误400。

有更多的常见笔记:

http:// – > https://

裸体到 – > www。

和一吨.htaccess的东西(不感兴趣)

我想要的是http://www.domain.com – > http://domain.com

我发现最有用的东西是这样的: 在Apache上的多个域(包括www-“subdomain”)?

我终于使用了ceejayoz在这篇文章中提到的解决scheme,有些人指出是混乱和复杂的,因为它得到了预期的结果,但我想知道这个在未来的最佳做法。

我会很高兴在正确的方向推动。

提前致谢。

如果你已经启用mod_rewrite ,你可以像这样强制:

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

或者,使用ServerName www.domain.tld定义一个额外的虚拟主机,并且总是使用HTMLredirect到domain.tld ,如下所示:

 <meta http-equiv="refresh" content="0;URL='http://domain.tld/'" /> 

或者在Apache vhostconfiguration里面

 Redirect permanent / http://domain.tld 

使用www.example.com有很多好处,而不是example.com 。 但是,两者都是可行的select。 要做你想要的,只需切换标准文档中的域使用www. 域。

我的方法是使用单个虚拟主机。 为所需的域定义虚拟主机,然后将别的域添加为别名。

以下规范应强制裸域的规范名称。 (重写条件规则从apache重写文档修改,以从名称中删除www. 。)

 ServerName example.com ServerAlias www.example.com UseCanonicalName On RewriteEngine On RewriteCond %{HTTP_HOST} !^example\.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://example.com/$1 [L,R]