使用虚拟主机我已经养成了使用这个的习惯:
<VirtualHost: *:80>
ServerName www.example.com
Redirect permanent / http://example.com/
</VirtualHost>
然而我经常看到使用重写来代替:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
一种方法比另一种方法有什么优势吗?
答案1
如果您不需要 mod_rewrite,那么就不要使用它。对于这种简单的情况,mod_alias 就完全足够了,而且更容易理解。此外,虽然 mod_alias 有点小,但它比 mod_rewrite 更快——这在高流量网站上可能会有所不同。
答案2
这两个指令会导致相同的 301 代码被发送回浏览器。因此,两者并无优劣。您应该根据自己更习惯使用哪个指令并更轻松地读取配置文件来选择其中一个指令。
两者都能够发送除 301(永久重定向)代码之外的其他内容。为了使 SEO 和浏览器清晰易懂,在消除(或要求)“www”时,应始终使用 301。其他类型的重定向不太常用(非常罕见);“临时重定向”是其中最常见的,仅应在重定向目标经常更改时使用(例如,指向您最近的博客条目的链接或类似内容)。