无需输入 www 即可访问网站

无需输入 www 即可访问网站

我有一个可以通过 www.example.com 访问的网站。现在我想让它也可以通过 example.com 访问。我该怎么做?

我有几个子域名,例如 test.example.com、test2.example.com 等。我也阅读了一些内容,发现应该使用htaccess从 example.com 永久重定向到 www.example.com。

RewriteCond %{http_host} ^example.com [nc]
RewriteRule ^(.*)$ http://www.example.com/$1 [r=301,nc]

因此现在应该没有重复的内容,并且应该对 SEO 友好。但我该如何创建A-record?现在只有一个 www.example.com。如果我创建一个带有 example.com 的网站,它将自动映射到 example.com.example.com...

然后我必须在主机文件中添加一个条目。它看起来像这样吗?

192.168.1.1 example.com

然后我有一些 Apache VirtualHost 的条目。这个文件正确吗?

<VirtualHost 192.168.1.1:80>
 ServerName www.example.com
ServerAlias *.www.example.com
ServerAlias example.com

ServerAdmin [email protected]

 DocumentRoot /var/www/html/path

 <Directory /var/www/html/path>
  AllowOverride None
  Options +FollowSymLinks -Indexes -Includes +Multiviews +ExecCGI
  Order allow,deny
  Allow from all
  AllowOverride All
 </Directory>
</VirtualHost>

解决方案:

<VirtualHost 192.168.1.1:80>
    ServerName example.com
    Redirect 301 / http://www.example.com/
</VirtualHost>

<VirtualHost 192.168.1.1:80>
    ServerName www.example.com
    ServerAlias *.www.example.com

    ServerAdmin [email protected]

    DocumentRoot /var/www/html/path

    <Directory /var/www/html/path>
        AllowOverride None
        Options +FollowSymLinks -Indexes -Includes +Multiviews +ExecCGI
        Order allow,deny
        Allow from all
        AllowOverride All
    </Directory>
</VirtualHost>

我将其与两个 A 记录(一个用于 www.example.com,另一个用于 example.com)一起创建,这些记录指向 Web 服务器所在的 IP 地址。此外,我在/etc/hosts

192.168.1.1 www.example.com example.com

我还声明了来自 squid 的白名单条目:

.example.com

答案1

但是我该如何创建 A 记录?现在只有一条 www.example.com 记录。如果我创建一条 example.com 记录,它将自动映射到 example.com.example.com ...

为什么是 example.com.example.com?只需让您的 DNS 主机为 @(域名本身)添加一个指向服务器 IP 地址的 A 记录即可。

然后我必须在主机文件中添加一个条目

如果它在 DNS 中则不行。

然后我有一些 Apache VirtualHost 的条目。这个文件正确吗?

我个人的偏好是将“裸”域名放在其自己的部分中,并使用一个简单的Redirect permanent指令将用户推送到 www 网站。

这将避免因解析带有条件重定向的 .htaccess 文件而产生的(诚然适度的)性能损失。

这也意味着您将获得两个名称的单独日志文件。恕我直言,这是一件好事 - 它将使您更容易分辨出用户实际上来自哪个域,并避免在同一个虚拟服务器中完成时在日志中获得的重复条目。

答案2

至于 dns 输入你应该这样做:

example.com.        A      192.168.x.y
www.example.com.    CNAME  example.com.

如果您只有用于测试的主机文件,那么应该这样做:

192.168.1.1 example.com 
192.168.1.1 www.example.com

在这种情况下,虚拟主机文件应如下所示:

<VirtualHost 192.168.1.1:80>
ServerName example.com
ServerAlias *.example.com

ServerAdmin [email protected]

DocumentRoot /var/www/html/path

<Directory /var/www/html/path>
    AllowOverride None
    Options +FollowSymLinks -Indexes -Includes +Multiviews +ExecCGI
    Order allow,deny
    Allow from all
    AllowOverride All
</Directory>

不应使用 htaccess 文件

相关内容