设为首页 收藏本站
查看: 1120|回复: 0

[经验分享] nginx url自动加斜杠问题及301重定向

[复制链接]

尚未签到

发表于 2018-11-16 09:41:08 | 显示全部楼层 |阅读模式
  导读:nginx url自动加斜杠问题及301重定向,URL指向一个目录并且在最后没有包含斜杠,会301重定向跳转,添加server_name或修改访问重定向。
  nginx url自动加斜杠问题及301重定向
  内部服务器使用nginx,做网站测试之用。不同域名使用端口号区分,如www用默认的80端口,其它域名用81,82...
  有时直接在地址栏敲网址,会发现跳转到localhost.localdomain的情况。
  比如858端口下有个hx目录,这样正常访问:http://192.168.1.158:858/hx/
  但如果少打了一个/,如:http://192.168.1.158:858/hx
  就会自动跳转到:http://localhost.localdomain:858/hx/
  经分析是nginx自动加斜杠的问题:
  在某些情况下(具体可参考 wiki.nginx.org),Nginx 内部重定向规则会被启动。
  例如,当URL 指向一个目录并且在最后没有包含“/”时,Nginx 内部会自动的做一个 301 重定向,这时会有两种情况:
  1、server_name_in_redirect on(默认),URL 重定向为: server_name 中的第一个域名 + 目录名 + /;
  2、server_name_in_redirect off,URL 重定向为: 原 URL 中的域名 + 目录名 + /。
  If server_name_in_redirect is on, then Nginx will use the first value of the server_name directive for redirects. If server_name_in_redirect is off, then nginx will use the requested Host header.
  原配置,没有加server_name:
  server {
  listen  858;
  }
  修改后:
  server {
  listen  858;
  server_name 192.168.1.158;
  }
  或:
  server {
  listen  858;
  server_name_in_redirect off;
  }
  此问题解决。访问http://192.168.1.158:858/hx可以正常跳转到http://192.168.1.158:858/hx/了。
  分析:
  服务器的hostname是localhost.localdomain,当没有设置server_name时,server_name就变成hostname了。
  默认又是server_name_in_redirect on,因此原配置访问hx目录时,会重定向到localhost.localdomain/hx/了。
  第一种修改方法,加了server_name,那就跳转到server_name + 目录名 + /,对了。
  第二种修改访问,重定向为:访问的URL+目录名+/,也对了。
  泛解析配置:
  server{
  listen 80;
  server_name _;
  }
  如果有个phpcheck目录,有人不小心链了http://www.plchome.org/phpcheck这样一个链接,就会重定向到http://_/phpcheck/。
  所以这种在没法指定server_name的情况下,要加上server_name_in_redirect off。
  server{
  listen 80;
  server_name _;
  server_name_in_redirect off;
  }
  这时,访问www.plchome.org/phpcheck,就会自动并且正确的跳转到www.plchome.org/phpcheck/了。
  晚上升级一台服务器的nginx版本时,在changes里看到:
  Changes with nginx 0.8.48   03 Aug 2010
  *) Change: now the "server_name" directive default value is an empty
  name "".
  Thanks to Gena Makhomed.
  *) Change: now the "server_name_in_redirect" directive default value is
  "off".
  从nginx 0.8.48起server_name_in_redirect已经默认为off了,不再需要指定了。
  相关文章

  •   nginx伪静态url重写方法示例
  •   nginx重定向规则的入门实例
  •   nginx 301域名重定向的几种情况
  •   nginx伪静态url重写规则与apache伪静态的区别
  •   nginx中301重定向与子目录重定向的配置实例
  •   nginx rewrite重写模块与url重写规则的配置


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-635652-1-1.html 上篇帖子: nginx与lua的安装教程 下篇帖子: Linux下nginx+tomcat负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表