目录自动添加"/"

问题描述

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

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. npm install 报权限错误,permission denied
  2. HTML5路由和PJAX
  3. 第一篇:数据库服务概述
  4. Qt学习之路(2):Hello, world!
  5. express.static 和 lit-html
  6. vs2010中MEX文件建立与调试
  7. mysql三种引擎_MySQL常见的三种存储引擎
  8. 为什么高斯分布概率密度函数的积分等于1
  9. 7-2 最大流 加强版 (20 分)
  10. 20135310陈巧然家庭作业汇总[3.56 3.67 6.23 6.39.6.40 6.41]
  11. c++ opengl 绘制地面_铝合金门窗设计之绘制节点图
  12. 【转载】关于小程序的100个常见问题(基础知识扫盲)
  13. CFA一级学习笔记--衍生品(一)--概念以及定义
  14. 英语: 听力(Listening)
  15. MIT 操作系统实验 MIT JOS lab1
  16. C++基础知识—— 基本输入输出
  17. 微信小程序刷新当前页面
  18. 常用Linux命令、文件操作解压缩相关、Linux命令大全、测试查询
  19. 基于大数据的动漫影视可视化分析系统
  20. 秒表计时器——Java基础练手项目(Java课程设计)

热门文章

  1. 二分图带权匹配、最佳匹配与KM算法
  2. UITabbarController 实例一
  3. 设置表格边框为1px的方法
  4. Linux centos7 shell特殊符号、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符号...
  5. Xcode 6 打包ipa文件
  6. 20155313 2016-2017-2 《Java程序设计》第三周学习总结
  7. jQuery的无new构建
  8. mongodb指南(翻译)(一) - 翻译前言
  9. 【转】别人整理的DP大全
  10. SpringBoot中@PropertySource和@ImportResource以及@Bean