按理来说,应该 是 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 )
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 可以这样做
单域名
server {
server_name
xxx.com;
return 301 $scheme://
www.xxx.com$request_uri;
}
正则匹配到不带 www 的 强制转向所有域名
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 你域名解析过去了 他在服务器处理 抓取你设置的转向地址
301 转向
server {
server_name 你的域名;
return 301 转向地址$request_uri;
}
302 转向
server {
server_name 你的域名;
return 302 转向地址$request_uri;
}
可以添加 log 或者 track 做请求的统计分析 知道转发请求了多少什么的