菜鸡源码,专注精品下载!
当前位置:首页 > 建站教程 > 调试安装

nginx网址结尾自动加斜杠

发布时间:2024-01-04  栏目:调试安装   浏览:   分类:Nginx配置

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。在Nginx配置文件中,可以通过修改location块中的重定向规则来实现网址结尾自动加斜杠的功能。例如,可以在location / {}块中添加rewrite ^(.*[^/])$ $1/ permanent;这行代码,这样就可以实现当访问不带斜杠的网址时,会自动跳转到带斜杠的网址。这样可以避免用户因为忘记输入斜杠而导致无法访问网站的问题。

方法一

location/app/{proxy_passhttps://www.wdzzz.com/app/;}

location/app{proxy_passhttps://www.wdzzz.com/app;}

如果请求地址不带斜杠,浏览器301 Moved Permanently响应跳转到带斜杠地址。

当请求URL目录后面没有斜杠/ ,Nginx 配置中没有匹配的目录,就会自动 301到有斜杠/的目录。

方法二

URL尾部没有斜杠的自动跳转到带斜杠的URL网址。并且不影响其他文件。

if(!-f$request_filename){rewrite^(.*[^/])$$1/permanent;}

注意将上面三行代码放到你伪静态规则的尾部,这样不影响已经存在的规则。自己的规则匹配不到的情况下最后才会跳转。

这样可以针对目录,针对html结尾的就不好用了

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

方法三

放在locaation里边就行

location/new{root/data/;indexindex.html;#解决访问new不加斜线时无法访问问题if(-d$request_filename){rewrite^/(.*)([^/])$https://$host/$1$2/permanent;}try_files$uri$uri//new/index.html;if($request_filename~*.*\.(?:htm|html)$){add_headerCache-Control"no-store";}}

这样,nginx就会进行判断了,如果请求的是一个文件夹,会自动在最后加上/符号,如果请求的是一个文件,则不会改变原有url

接下来对这段代码进行一个解释:

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

2、rewrite是执行url重写操作

3、^/(.*)([^/])$表示以/符号开始并紧跟着任何字符,同时不是以/为结束的字符串,在我的url中,(.*)表示的wordpres,([^/])表示的s

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

5、permanent表示,返回值是301

# 变量解释

try_files 固定语法

$uri 指代home文件(IP地址后面的路径,假如是127.0.0.1/index/a.png,那就指代index/a.png)

$uri/ 指代home文件夹

/index.html 向ip/index.html 地址发起请求

try_files $uri $uri/ /index.html;

尝试解析下列2个文件/文件夹(自动分辨出,IP后面的路径是文件还是文件夹), $uri/$uri/,

如果解析到,返回第一个,

如果都没有解析到,向127.0.0.1/index.html发起请求跳转(该路由必须真实,不然会报错)


相关专题
评论
调试安装
建站知识
使用技巧
调试安装
运营推广