目录自动添加"/"

问题描述

通过一个例子来演示下问题:

server {listen   80;server_name localhost;location / {root html;index index.html;}
}

要想访问上述资源,很简单,只需要通过http://192.168.200.133直接就能访问,地址后面不需要加/,但是如果将上述的配置修改为如下内容:

server {listen   80;server_name localhost;location /hm {root html;index index.html;}
}

这个时候,要想访问上述资源,按照上述的访问方式,我们可以通过http://192.168.200.133/hm/来访问,但是如果地址后面不加斜杠,页面就会出问题。如果不加斜杠,Nginx服务器内部会自动做一个301的重定向,重定向的地址会有一个指令叫server_name_in_redirect on|off;来决定重定向的地址:

如果该指令为on重定向的地址为:  http://server_name/目录名/;
如果该指令为off重定向的地址为:  http://原URL中的域名/目录名/;

所以就拿刚才的地址来说,http://192.168.200.133/hm如果不加斜杠,那么按照上述规则,如果指令server_name_in_redirect为on,则301重定向地址变为 http://localhost/hm/,如果为off,则301重定向地址变为http://192.168.200.133/ht/。后面这个是正常的,前面地址就有问题。

注意server_name_in_redirect指令在Nginx的0.8.48版本之前默认都是on,之后改成了off,所以现在我们这个版本不需要考虑这个问题,但是如果是0.8.48以前的版本并且server_name_in_redirect设置为on,我们如何通过rewrite来解决这个问题?

解决方案

我们可以使用rewrite功能为末尾没有斜杠的URL自动添加一个斜杠

server {listen   80;server_name localhost;server_name_in_redirect on;location /hm {if (-d $request_filename){rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;}}
}

Nginx的rewrite案例之目录合并相关推荐

  1. Nginx的rewrite案例之防盗链

    防盗链 防盗链之前我们已经介绍过了相关的知识,在rewrite中的防盗链和之前将的原理其实都是一样的,只不过通过rewrite可以将防盗链的功能进行完善下,当出现防盗链的情况,我们可以使用rewrit ...

  2. nginx配置文件rewrite规则

    nginx配置文件rewrite规则 文章目录 nginx配置文件rewrite规则 @[toc] if Rewite 规则介绍 flag标志位 配置rewrite规则 last二次转发 if 语法: ...

  3. nginx的rewrite配置

    nginx的rewrite配置 文章目录 nginx的rewrite配置 指令语法 应用位置 flag参数 常用正则表达式 指令语法 rewrite regex replacement [flag]; ...

  4. php判断文本不存在,nginx 判断访问文件或目录不存在rewrite

    文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在目录 * -e和!-e用来判断是否存在文件或目录 * -x和!-x用来判断文件是否可执行 样例 : 判断访 ...

  5. Nginx之rewrite配置

    Rewtrite : 其主要目的是为了进行URL 重写,进行URL重定向.主要采用PCRE: Perl Compatible Regular Expressions(Perl兼容正则表达式语法)进行规 ...

  6. NGINX的rewrite模块

    NGINX的rewrite模块 4.18 Rewrite 模块 Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCRE(perlc ...

  7. Nginx的rewrite应用

    Rewrite主要的功能是实现URL重写,Nginx 的 Rewrite 规则采用 PCRE Perl 兼容正则表达式的语法进行规则匹配,如相使用 Nginx 的 Rewrite 功能,在编译 Ngi ...

  8. nginx的rewrite 参数和例子

    nginx的rewrite 参数和例子 正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中 ...

  9. 第七章:nginx的rewrite规则详解

    模块ngx_http_rewrite_module 该ngx_http_rewrite_module模块用于使用PCRE正则表达式更改请求URI,返回重定向,并有条件地选择配置. 句法: break; ...

最新文章

  1. alt+shift+j,添加日期、作者等
  2. 张小明教授+计算机,香港浸会大学、实验室兼职导师张晓明教授访问实验室并做学术报告...
  3. 【例题收藏】◇例题·6◇ 电压机制(voltage)
  4. 使用SAP Cloud Platform Leonardo机器学习提取图片的特征向量
  5. eladmin代码自动生成_如何让Mybatis自动生成代码
  6. 解决mac 系统软件被阻止载入点允许没反应的问题
  7. 《ArcGIS Runtime SDK for .NET开发笔记》--三维功能
  8. 【李宏毅2020 ML/DL】P79 Generative Adversarial Network | Tips for improving GAN
  9. ubuntu之路——day9.2 Covariate shift问题和Batch Norm的解决方案
  10. 无公式无数学内容下,如何理解加密与解密知识?
  11. 苹果手机密码锁如何解锁
  12. 5.23低版本到高版本问题
  13. css div img等元素居中对齐
  14. Java实现通过证书访问Https请求
  15. 陈世涛:鼠标滚轮引起的画面上下跳动问题处理 跳行怎么办?
  16. 检查采购订单是否有零单价
  17. macbook蓝牙pan未连接_macOS Catalina 10.15.1 连接iPad 13.2.2 分屏失败的解决办法
  18. uniapp 判断是否登录,是跳转至首页,否跳转至登录页
  19. 什么是大小端?如何测试某台机器是大端还是小端。
  20. ic618画版图2.0

热门文章

  1. python 学习经验 转自(http://www.elias.cn/Python/HomePage)
  2. 听“汉代风云”,看“晁错之死”
  3. 无埋点实现监测的真相——革新还是噱头?
  4. python打包工具 --- pyinstaller
  5. div赋值,取值和input赋值,取值
  6. 力扣(LeetCode)258. 各位相加
  7. 使用PHP生成分享图片
  8. AC日记——「HNOI2017」礼物 LiBreOJ 2020
  9. 利用python去除红章
  10. 避免css中文字体在浏览器中解析成乱码