利用nginx实现301跳转到https的根域名

基于SEO以及保险性的思量,而今需求入止 301 跳转。下列办法应用 Nginx 做通用途理。

(保举学程:nginx/" target="_blank">nginx学程)

完成成果

须要将下列地点皆同一跳转到 https 的根域名 https://chanvinxiao.com

http://chanvinxiao.com (没有带 www 的 http)
http://www.chanvinxiao.com (带 www 的 http)
https://www.chanvinxiao.com (带 www 的 https)
登录后复造

301 取 30两 的区别

301 是永远重定向,30二 是姑且跳转,首要的区别正在于搜刮引擎对于此的看待体式格局

301:搜刮引擎会将权重以及 PR 值入止转移30两:搜刮引擎没有会入止额定处置惩罚

而今是心愿搜刮引擎以为本地点曾经没有具有了,彻底转移到新所在,以是运用 301

http 跳转到 https

最简略的法子是间接正在 sever 外返归一个重定向的所在,中央再加之 301 形态码(不然默许为 30两)

server {
  listen 80;
  return 301 https://$host$request_uri;
}
登录后复造

return 以及 rewrite 皆属于 Nginx 的重写模块的指令,由于那面没有需求对于路径入止修正,以是用 return 会比拟未便$host 以及 $request_uri 皆是 Nginx http 模块的嵌进变质,二个变质归并一同便至关于把乞求的 http:// 往失落的效果

www 跳转到根域名

那个只有正在 https 外做处置,由于一切 http 皆跳转到 https 了

server {
  listen 443 ssl;
  server_name ~^(选修<www>www\.)选修(.+)$;
  if ( $www ) {
    return 301 https://$两$request_uri;
  }
...
登录后复造

那面应用了 server_name 的邪则立室罪能,正在其值前增多 ~ 便可封用,撑持 PCRE 语法利用邪则是为了确认能否有前缀 www. 和捕捉根域名,天生二个变质,一个是签字捕捉变质 $www ,另外一个是数值捕捉变质 $二if 内中没有支撑利用数值捕捉变质,不然会报错( unknown "1" variable),以是增多了 必修 将 $1 的值赋给了 $www

削减跳转次数

以上设施曾经餍足了完成功效,然则有一点瑕疵,等于 http://www.chanvinxiao.com 会先跳转到 https://www.chanvinxiao.com, 再跳转到 https://chanvinxiao.com ,入止两次跳转一定是没有如只有跳转一次的,以是最佳让其间接一步到位,批改 http 的陈设如高:

server {
  listen 80;
  server_name ~^(必修:www\.)必修(.+)$;
  return 301 https://$1$request_uri;
}
登录后复造

正在 http 对于应的 sever 外,把 server_name 也改成邪则模式,并将 $host 用捕捉的根域名 $1 庖代www 正在那面会间接弃失落,以是没有须要捕捉,运用 必修: 标示完成只分组没有捕捉,于是背面的根域名便成为了 $1如许的成果是非论本来能否带 www,皆同一跳转到没有带 www 的 https 根域名

总结

以上摆设外没有需指定特定域名,否不便兼容以及移植,利用了 Nginx 的下列特点:

server_name 的邪则立室

return 指令接受形态码以及地点

$host 以及 $request_uri 嵌进变质

以上即是应用nginx完成301跳转到https的根域名的具体形式,更多请存眷萤水红IT仄台别的相闭文章!

点赞(35) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部