Nginx的rewrite案例之目录合并
目录自动添加"/"
问题描述
通过一个例子来演示下问题:
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案例之目录合并相关推荐
- Nginx的rewrite案例之防盗链
防盗链 防盗链之前我们已经介绍过了相关的知识,在rewrite中的防盗链和之前将的原理其实都是一样的,只不过通过rewrite可以将防盗链的功能进行完善下,当出现防盗链的情况,我们可以使用rewrit ...
- nginx配置文件rewrite规则
nginx配置文件rewrite规则 文章目录 nginx配置文件rewrite规则 @[toc] if Rewite 规则介绍 flag标志位 配置rewrite规则 last二次转发 if 语法: ...
- nginx的rewrite配置
nginx的rewrite配置 文章目录 nginx的rewrite配置 指令语法 应用位置 flag参数 常用正则表达式 指令语法 rewrite regex replacement [flag]; ...
- php判断文本不存在,nginx 判断访问文件或目录不存在rewrite
文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在目录 * -e和!-e用来判断是否存在文件或目录 * -x和!-x用来判断文件是否可执行 样例 : 判断访 ...
- Nginx之rewrite配置
Rewtrite : 其主要目的是为了进行URL 重写,进行URL重定向.主要采用PCRE: Perl Compatible Regular Expressions(Perl兼容正则表达式语法)进行规 ...
- NGINX的rewrite模块
NGINX的rewrite模块 4.18 Rewrite 模块 Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCRE(perlc ...
- Nginx的rewrite应用
Rewrite主要的功能是实现URL重写,Nginx 的 Rewrite 规则采用 PCRE Perl 兼容正则表达式的语法进行规则匹配,如相使用 Nginx 的 Rewrite 功能,在编译 Ngi ...
- nginx的rewrite 参数和例子
nginx的rewrite 参数和例子 正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中 ...
- 第七章:nginx的rewrite规则详解
模块ngx_http_rewrite_module 该ngx_http_rewrite_module模块用于使用PCRE正则表达式更改请求URI,返回重定向,并有条件地选择配置. 句法: break; ...
最新文章
- npm install 报权限错误,permission denied
- HTML5路由和PJAX
- 第一篇:数据库服务概述
- Qt学习之路(2):Hello, world!
- express.static 和 lit-html
- vs2010中MEX文件建立与调试
- mysql三种引擎_MySQL常见的三种存储引擎
- 为什么高斯分布概率密度函数的积分等于1
- 7-2 最大流 加强版 (20 分)
- 20135310陈巧然家庭作业汇总[3.56 3.67 6.23 6.39.6.40 6.41]
- c++ opengl 绘制地面_铝合金门窗设计之绘制节点图
- 【转载】关于小程序的100个常见问题(基础知识扫盲)
- CFA一级学习笔记--衍生品(一)--概念以及定义
- 英语: 听力(Listening)
- MIT 操作系统实验 MIT JOS lab1
- C++基础知识—— 基本输入输出
- 微信小程序刷新当前页面
- 常用Linux命令、文件操作解压缩相关、Linux命令大全、测试查询
- 基于大数据的动漫影视可视化分析系统
- 秒表计时器——Java基础练手项目(Java课程设计)
热门文章
- 二分图带权匹配、最佳匹配与KM算法
- UITabbarController 实例一
- 设置表格边框为1px的方法
- Linux centos7 shell特殊符号、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符号...
- Xcode 6 打包ipa文件
- 20155313 2016-2017-2 《Java程序设计》第三周学习总结
- jQuery的无new构建
- mongodb指南(翻译)(一) - 翻译前言
- 【转】别人整理的DP大全
- SpringBoot中@PropertySource和@ImportResource以及@Bean