选择我们网站的非 www 或者 www 版本相当重要,因为两者都可能会给用户带来问题。
重定向不像以前那么重要,但有些人可能仍然选择在适当的位置进行重定向。
重要的是,网站在 www 和裸域上都无法访问。
使用 Apache 重定向站点的最简单方法是为站点的每个版本维护一个 .conf 文件。
这些文件应该作为单独的 .conf 文件放在 /etc/apache2/sites-available/中,并使用 a2ensite 命令启用。
配置文件的内容应如下所示:
<VirtualHost *:80> ServerName www.example.com Redirect permanent/https://example.com/ </VirtualHost>
这是一个非常简单的虚拟主机配置文件。
这只会处理 example.com 的 www 子域,并将流量重定向到非 www 版本。
如果需要,我们可以轻松地反过来做。
要创建文件,可以从终端 (sudo nano www_example_com.conf) 使用诸如 nano 之类的工具。
创建文件后,我们可以使用 sudo a2ensite www_example_com.conf 启用该站点。
最后,记得运行 sudo service apache2 reload。
另一种选择是使用 .htaccess 文件,但我们可能仍然需要 VHOST 文件。
使用 htaccess 将 WWW 重定向到非 WWW
由于 www 部分只是一个子域,因此许多人不喜欢使用它。
因此,除非我们有使用 WWW 的技术原因,否则我们建议我们只使用基本域。例如example.com
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$[NC] RewriteRule ^(.*)$http://%1/ [R=301,L]
R=301 部分创建了一个 301“永久移动”重定向,而 L 使其成为最后一条规则——防止更多规则被执行。
如果我们想重定向到 www,我们可以使用以下命令:
我们还可以将裸域重定向到 WWW 子域——尽管这可能不太理想。
RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$http://www.onitroad.com/ [L,R=301]
我们只需要在 .htaccess 文件中启用 RewriteEngine 和 RewriteEngine On 一次。