域名跳转重定向这个事儿, 本质上是靠HTTP状态码。比如301表示永久, 302表示临时, 还有307和308也是。它的作用, 是把对旧域名的请求, 或者对旧路径的请求, 转发给新地址。实现的方式, 主要有四种类型。
第一种是Web服务器规则配置。第二种是DNS解析层的操作, 像CNAME这种, 以及URL转发。第三种是在CDN或者WAF这层做的事情, 比如URL重写。第四种是用那些专门的域名管理平台上去点可视化的跳转设置选项。
选型的时候, 那个核心的判断依据就是, 去看看这个域名还有这个网站到底托管在什么位置了。另外呢, 还要看看是不是有需要批量去管理这种情况出现的, 再一个就是瞧瞧这里头是不是涉及到有多个域名的场景。
主流工具与软件分类
1. 在Web服务器这一层级, 这是最常见的情况。
Nginx, 是通过location块, 并配合return 301这个指令来实现的, 它适合那些自己建立服务器的人。
在Apache服务器, 也就是我们通常所说的httpd当中, 通过使用.htaccess文件里的Redirect指令或者是RewriteRule指令, 可以实现非常灵活且高的灵活度。
在Windows服务器环境里面, 主流的方案是使用IIS, 然后通过web.config这个文件去配置URL Rewrite这个模块。
2. 域名DNS解析层
你只需要在域名注册商那里或者DNS管理面板里面加上URL转发记录就可以了。比如说你可以在gname.xin的域名解析管理后台直接添加“URL转发”记录, 让旧域名的访问流量跳转到新域名里面去。
你这样做的时候完全不需要修改服务器的配置部分。这种做法非常适合用来做整站的迁移或者是品牌域名的变更操作。大家平时支持的状态码通常都是301和302这两种, 但是有些平台也会额外支持308状态码。
3. CDN与WAF层
Cloudflare这个平台、还有阿里云的CDN服务, 以及腾讯云的CDN功能等等, 都在其中支持URL转发规则的设置方式。这种设置方式是让设备在边缘节点那里把跳转的事情给完成了。这样的话, 响应速度是比较快的情况。这样的特点是比较适合用于需要进行全球高并发访问的应用场景之中。
4. 专用域名管理面板
有一部分域名注册方提供的这种功能, 是可以直接用图片界面来设置重定向的, 比方说在gname.xin这个域名的管理页面里头, 有个跳转设置的选项, 根本就不用去写那些配置代码文件, 这特别适合那些不懂技术的人, 为了快点把跳转给弄好。
典型配置步骤(以Nginx 301整站跳转为例)
1. 找到那个对应的server块, 然后在这个地方再添加一个新的server段落, 让它去监听那个旧的域名。
2. 把跳转的这个规则给写进去。
server {
listen 80;
server_name olddomain.com;
return 301 https://newdomain.com$request_uri;
}
3. 在操作过程中需要执行nginx -t这个操作, 以此来检查语法是否无误, 然后确认结果是没有错误的情况。
4. 执行代码中的命令nginx -s reload, 来是让配置生效。
5. 用 curl -I http://olddomain.com 验证返回状态码为301。
选型建议
关于单站以及服务器进行自主管理的这种模式, 它可以实现通过Nginx或者Apache来进行直接的配置操作, 从而使得额外成本为零。
当你面对需要集中管理多个域名的状况, 同时心里不太愿意去亲自操作那些复杂的服务器配置时, 那么你就可以转而使用域名管理平台上面所提供的URL转发这一功能。
当面临着高并发的情况, 并且需要进行全球范围的分发时, 可以考虑启用
临时活动页面的跳转操作需要使用302状态码,这样做是为了避免搜索引擎把它误判断为永久性的变更。
注意事项
301这个代码是用来处理域名做永久迁移的情况的, 这个时候搜索引擎会去更新它自己的索引内容, 而302这个代码主要是适用于那些只是临时使用的场景, 在这个场景下权重是不会发生转移这件事。
跳转链路不应当超过两个层次, 就像从A跳转到B, 之后又从B跳转到C这样, 如果进行多重跳转的话, 会导致权重的衰减。
在https的环境之下, 跳转的那个最终地址, 是一定必须也是走https协议的, 不然的话浏览器它就会产生一个混合内容的警告信息。
在完成配置以后, 请务必在真机上对返回的状态码以及跳转目标URL进行验证, 以此来避免因拼写出现错误而引发页面陷入无限循环的情况。


