【Nginx学习】url地址补全最后的/(反斜杠)

问题描述

将无后缀名url连接地址:http://127.0.0.1/zt/n4 补全/ ,变为:http://127.0.0.1/zt/n4/

为什么要这么做

 当Web服务器接收到对某个末尾不含斜杠的url请求时,例如:http://www.360shouji.com/product,这时服务器会搜索网站根目录下有没有名为“product”的文件,如果没有就把product当做目录处理,然后返回abc目录下的默认首页。当Web服务器接收到的是末尾带斜杠的请求时就会直接当做目录处理。为了语义明确。当然现在很多应用程序是路由重写路径的。
 
配置方法

在nginx配置文件中nginx.conf里加入如下代码

if (-d $request_filename){
    rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}

这样,nginx就会进行判断了,如果请求的是一个文件夹,会自动在最后加上/符号,如果请求的是一个文件,则不会改变原有url
接下来对这段代码进行一个解释:

1,if (-d $request_filename),如果请求的是一个文件夹,则为真,进到if语句中执行

2,rewrite是执行url重写操作

3,^/(.)([^/])$表示以/符号开始并紧跟着任何字符,同时不是以/为结束的字符串,在我的url中,(.)表示的路径的前面一截字符如:/abc/cde,([^/])表示不是以/为结束的字符串

4,http://$host/$1$2/ 表示的重写后的地址,$host是请求的域名,$1是前面第一个括号里的内容,在我的url里就是/abc/cde 等一串字符串 ,$2是前面第二个括号里的内容,在我的url里是

5,permanent表示,返回值是301

你可能感兴趣的:(webserver/服务器设置)