令人难以置信的是,我在网上找不到关于使用裸域(无子域)作为主 URI 的良好教程或简单参考指南。
我正在尝试在 apache 中的 httpd.conf 中配置此操作。由于我对服务器这方面还比较陌生,所以我只能自己尝试解决,我所能做的就是配置一些讨厌的重定向循环和错误 400。
对于更常见的情况有很多注释:
http:// --> https://
和
裸到-->www.
以及大量的 .htaccess 内容(不感兴趣)
我想要的是http://www.domain.com-->http://域名.com
我发现最有帮助的是:apache 上有多个域名(包括 www-“子域名”)吗?
我最终使用了 ceejayoz 在那篇文章中提到的解决方案,有些人指出它很混乱和复杂,因为它得到了预期的结果,但我想知道将来的最佳实践。
我将非常感激您给我指明正确的方向。
提前致谢。
答案1
如果您已启用mod_rewrite
,你可以像这样强制执行:
RewriteCond %{HTTP_HOST} ^www\.domain\.tld$
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]
或者,使用 定义一个额外的 vhostServerName www.domain.tld
并始终重定向到domain.tld
,使用 HTML 也可以,如下所示:
<meta http-equiv="refresh" content="0;URL='http://domain.tld/'" />
或者在 apache vhost 配置中使用
Redirect permanent / http://domain.tld
答案2
有很多理由使用www.example.com
而不是example.com
。但是,两者都是可行的选择。要按您的意愿操作,只需在标准文档中切换域以使用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]