可能重复:
URL 中包含“www”有什么意义?
我www
是否应该在 URL 前面使用?有些网站说应该,有些则说相反。
www
如果URL 前面没有 is ,我应该在其中输入什么.htaccess
来重写 URL 并针对搜索引擎优化我的网站?
答案1
是的,最好(从 SEO 角度来看)将一个重定向到另一个。您需要避免内容重复和链接汁碎片化(尽管现在主要搜索引擎上应该已经修复了这两个问题)。
<VirtualHost *:80>
ServerAlias www.example.com
RedirectMatch permanent ^/(.*) http://example.com/$1
</VirtualHost>
但请记住,无 www 运动的缺点是所有子域名也将传输主(无 www)域名的 cookie。
答案2
当然是 301 一个接一个。
www.
当您设想某个时候可能在同一个域下拥有其他主机名/子域并且它们有自己的安全上下文时,有必要制作规范版本。
如果您选择非www.
版本,则无法在主example.com
站点上设置 cookie,除非同时将其提供给 上的任何内容subdomain.example.com
。如果子域类似于 ,userimg.example.com
您尝试在其中以较低的安全权限托管用户提交的数据,则非www.
版本将泄露www.
版本应单独保存的 cookie。
(当然还有其他与网络无关的东西,比如不能对裸域名进行 CNAME。)
答案3
没有理由不同时提供这两项服务。
答案4
对于某些人来说,这是一个偏好问题,而对于另一些人而言,这是一个激烈的宗教讨论问题(例如 kde 是否比 gnome 好,vim 是否比 emacs 好,等等)。
无论您选择哪种方式,以下来自标准 drupal .htaccess 的代码都向我们展示了如何将用户重定向到 www:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
这是强制使用非 www URL 所需的代码:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]