方法一
location /app/ { proxy_pass https://www.wdzzz.com/app/; }
或
location /app { proxy_pass https://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/; index index.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_header Cache-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发起请求跳转(该路由必须真实,不然会报错)
nginx
2022-11-28 19Nginx是一个高性能的HTTP和反向代理web服务器,也是站长常见的网站环境之一.nginx凭借高性能低消耗近几年越来越多站长使用,学习好nginx也成为站长必备知识点.我的...
- 开源的Nginx配置文件解析工具 [2024-09-08]
- Nginx常用301重定向代码整理 [2024-02-07]
- Nginx限制国内IP用户访问网站 [2024-01-05]
- nginx判断某个目录不跳转https,其他目录强制跳转https配置规则 [2024-01-03]
- nginx实现子域名301跳转到另外一个域名对应子域名 [2023-12-29]