看见有人问 就回复了下原理 算比较清晰吧?
问
按理来说,应该 是 DNS 做跳转要比服务器高效吧?
例如:
使用 DNS 跳转(从 x.com 跳转到 www.x.com )
1 )客户端》 DNS 》 301 》 DNS 》目标
使用 服务器 跳转(从 x.com 跳转到 www.x.com )
2 )客户端》 DNS 》服务器》 301 》 DNS 》目标
答
1 和 2 其实是一样
不同的地方
1 是使用 DNS 解析服务商的服务器
2 是使用你自己的服务器
按你的要求
xxx.com 转到 www.xxx.com
Apache 使用.htaccess (支持 HTTP 和 HTTPS )
1 2 3 4 5 6 7 8 9 |
RewriteEngine On RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ - [env=protocol:https] RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ - [env=protocol:http] RewriteCond %{HTTP_HOST} ^xxx.com [NC] RewriteRule ^(.*)$ http://www.xxx.com/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^xxx.com$ [NC] RewriteRule ^(.*)$ %{ENV:protocol}://www.xxx.com/$1 [L,R=301] |
改为你的域名 上传到网站根目录 .htaccess 即可 如果 Win 系统 不支持.htaccess 这种文件名文件
可以保存为 htaccess.txt FTP 上传后修改即可
nginx 可以这样做
单域名
1 2 3 4 |
server { server_name xxx.com; return 301 $scheme://www.xxx.com$request_uri; } |
正则匹配到不带 www 的 强制转向所有域名
1 2 3 4 |
server { server_name "~^(?!www\.).*" ; return 301 $scheme://www.$host$request_uri; } |
DNS 的标准解析协议 并没 301/302 redirect 这种解析标准
DNS 服务商提供给你的转向服务
是在 你的 DNS 记录 加一条 A 记录 @ A 1.1.1.1
只是这个记录你看不到 这个 1.1.1.1
就是 DNS 服务商的服务器 IP 你域名解析过去了 他在服务器处理 抓取你设置的转向地址
1 2 3 4 5 6 7 8 9 10 11 |
301 转向 server { server_name 你的域名; return 301 转向地址$request_uri; } 302 转向 server { server_name 你的域名; return 302 转向地址$request_uri; } |
可以添加 log 或者 track 做请求的统计分析 知道转发请求了多少什么的