怎么将域名访问定向到www子域名下?

nginx by Xudong Zhang @ 2015-10-20 13:10:39

我最近看到有博客说不区分的允许example.com以及www.example.com访问会影响到搜索引擎的排名及其他问题, 建议只用一种域名,比如将所有到example.com的重定向到www.example.com,该怎么弄呢?


如果对所以内容都启用example.com以及www.example.com这样的, 对于搜索引擎爬虫会同时爬到example.com/content1以及www.example.com/content1, 搜索引擎会当作两个不同的网站处理, 搜索结果也可能会有两个, 那么对于每个host来说点击什么的都分流了, 确实有影响, 所以一般都是只用一个, 然后将其他的永久重定向(301)过来.

####nginx 对于nginx来说, 可以用if condition来配置, 判断host包含www与否然后rewrite, 但是不推荐这样做, 看官方文档常见的错误配置方法

主要是因为, 如果用if指令, 那么每一个url都会走一个if判断, 即便是期望的host, 也会if判断一次, 耗费服务器资源.

推荐的配置方法如下:

  1. 将example.com 301 到www.example.com

    server {
        server_name example.com;
        return 301 $scheme://www.example.com$request_uri;
    }
    server {
        server_name www.example.com;
        # other configurations
    }
    
  2. 将www.example.com 301 到example.com

    server {
        server_name www.example.com;
        return 301 $scheme://example.com$request_uri;
    }
    server {
        server_name example.com;
        # other configurations
    }
    
by Xudong Zhang @2015-10-20 13:23:52.292 +0800 CST


我来回答

Markdown格式技巧

  • 行尾添加2个空格或者添加一个空行就能换行
  • 斜体: *hello* 或者 _world_
  • 加粗: **hello** 或者 __world__
  • 代码块: 添加空行,然后代码缩进4个空格
  • 特殊字符: 用\避免转义;\*就是*本身
  • python: `__name__`可以以代码形式输出__name__
  • 一个简单的例子

切换到移动版