我有一个域 – example.com 。
以下是我的DNSlogging 。
example.com A IP address www.example.com A IP address
这是我的Apache虚拟主机configuration。
<VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/public_html/www.example.com </VirtualHost>
现在,当我在浏览器中inputexample.com (没有www部分)时,我从DocumentRoot得到默认的Apache页面文件。 当我将www添加到我的域时,一切正常。
现在的问题是如何设置这个域名www.example.com和example.com服务于文件根目录相同的文件? 我应该在DNS级别处理这个问题还是以某种方式configurationWeb服务器? 所有这一切都是白搭,所以这个问题可能是愚蠢的。
你应该添加一个ServerAlias – 修改你的VirtualHost看起来像这样:
<VirtualHost *:80> # This first-listed virtual host is also the default for *:80 ServerName www.example.com ServerAlias example.com DocumentRoot "/www/domain" </VirtualHost>
您也可以将所有子域名redirect到您的根目录
ServerAlias example.com *.example.com
正如ceejayoz在他的评论中所说 ,你需要一个ServerAlias
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/public_html/www.example.com </VirtualHost>
无论你是否将ServerName或ServerAlias作为www ,实际上都是一个偏好问题。 如果您订阅no-www信念或yes-www信念,就好像您正在使用UseCanonicalName指令一样,您可能会发现,您可能会发现Apache会将用户redirect到某个意想不到的地方。
也就像ceejayoz提到的那样,你想select一个阵营(www.example.com或者仅仅是naked example.com)并坚持下去。 你不是真的想在这两个变体上提供相同的内容 – 别名应该真的redirect到规范的内容。 有一千个网站,会告诉你如何设置这个mod_rewrite 。
对于Nginx:
server { server_name www.example.com; rewrite ^/(.\*) http://example.com/$1 permanent;
对于Apache示例:
<VirtualHost \*:80> ServerName example.com ServerAlias www.example.com </VirtualHost>
更改后重新启动服务:
在你的apache问题旁边:
http://www.example.com应该是example.com的CNAME。 一个logging就够了。