前言:
目前大家对“nginxrewrite带路径”都比较讲究,咱们都想要知道一些“nginxrewrite带路径”的相关资讯。那么小编在网络上汇集了一些对于“nginxrewrite带路径””的相关内容,希望我们能喜欢,朋友们一起来学习一下吧!本文讨论,如何对目录自动加/
第一步,打开conf的配置文件
第二步 监听8082端口,配置server_name localhost;内容
root查html目录,index搜索其中的index.html文件
server块 { listen 8082; server_name localhost; location /heima { root html; index index.html; }}
第三步:这里出现了404的错误,错误的原因是因为文件资源寻找需要到 /heima目录下的 html文件的index.html文件,现在没有,找不到出错了
第四步 切换到html页面,创建heima文件,切换,利用>将内容装进去
第五步 利用cat可以查看index.html页面的内容
带个/和不带/的区别是什么?
把/去掉之后,它发送的请求有两个,一个是301短期重定向,一个是200永久重定向
但如果是访问的/访问的路径,最终只有一个请求,就是200
分析:
如果不加斜杠,Nginx服务器内部会自动做一个301的重定向,重定向的地址会有一个指令叫server_name_in_redirec onloff;来决定重定向的地址:
如果该指令为on 重定向的地址为: 目录名/;
如果该指令为off 重定向的地址为: http://原URL中的域名/目录名/;
这句话什么意思?
如果把server_name_in_redirec 设置成了on 路径就会变为了这个路径,会变成localhost
端口未提供服务,就会报错
所以就拿刚才的地址来说, 如果不加斜杠, 那么按照上述规则,如果指令server_name_in_redirect为on,则301重 定向地址变为 ,如果为off,则301重定向地址变为 ttp://192.168.200.133/ht/。后面这个是正常的,前面地址就有问题。
注意server_name_in_redirect指令在Nginx的0.8.48版本之前默认都是 on,之后改成了off,所以现在我们这个版本不需要考虑这个问题,但是 如果是0.8.48以前的版本并且server_name_in_redirect设置为on,我们 如何通过rewrite来解决这个问题?
手动给他改一下,第一步,切换到conf文件下,vim打开配置文件
手动配置,在server_name_in_redirect on中进行打开
打开之后就会出现一个明显的问题,带/就能够正常访问
不带/就不能够正常访问,就转圈圈了,因为它最终会把自己的服务重定向到localhost/heima/
这种情况,主要适用于,目录加/的情况,如果访问的是一个html页面,真实在使用的情况中,只有添加了目录,才最好加/
$host就是自己设置的主机IP,$server_port获取的是8082,加上下面if这句话的意思是主要判断,
index.html,设置的是一个页面,不发生映射跳转
如果是永久重定向,用permanent进行设置
测试经过 192.168.200.133:8082/heima/ 这种带/最终返回了200状态码
如果不带/,会发送一个302和200的状态码,同时下面的内容也多了一个/
为什么多了一个/,原因是下面的$1在匹配的时候,已经匹配了/,所以在URL重定向的路径多了一个/,解决多了/的方法是
将server_port后面/去掉,直接加上$1就好了
最终//的内容消失不见了
标签: #nginxrewrite带路径