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; ...
最新文章
- alt+shift+j,添加日期、作者等
- 张小明教授+计算机,香港浸会大学、实验室兼职导师张晓明教授访问实验室并做学术报告...
- 【例题收藏】◇例题·6◇ 电压机制(voltage)
- 使用SAP Cloud Platform Leonardo机器学习提取图片的特征向量
- eladmin代码自动生成_如何让Mybatis自动生成代码
- 解决mac 系统软件被阻止载入点允许没反应的问题
- 《ArcGIS Runtime SDK for .NET开发笔记》--三维功能
- 【李宏毅2020 ML/DL】P79 Generative Adversarial Network | Tips for improving GAN
- ubuntu之路——day9.2 Covariate shift问题和Batch Norm的解决方案
- 无公式无数学内容下,如何理解加密与解密知识?
- 苹果手机密码锁如何解锁
- 5.23低版本到高版本问题
- css div img等元素居中对齐
- Java实现通过证书访问Https请求
- 陈世涛:鼠标滚轮引起的画面上下跳动问题处理 跳行怎么办?
- 检查采购订单是否有零单价
- macbook蓝牙pan未连接_macOS Catalina 10.15.1 连接iPad 13.2.2 分屏失败的解决办法
- uniapp 判断是否登录,是跳转至首页,否跳转至登录页
- 什么是大小端?如何测试某台机器是大端还是小端。
- ic618画版图2.0
热门文章
- python 学习经验 转自(http://www.elias.cn/Python/HomePage)
- 听“汉代风云”,看“晁错之死”
- 无埋点实现监测的真相——革新还是噱头?
- python打包工具 --- pyinstaller
- div赋值,取值和input赋值,取值
- 力扣(LeetCode)258. 各位相加
- 使用PHP生成分享图片
- AC日记——「HNOI2017」礼物 LiBreOJ 2020
- 利用python去除红章
- 避免css中文字体在浏览器中解析成乱码