Linux-Nginx-Rewrite规则-1
2015-06-15 22:51
726 查看
对rewrite来说,正则匹配不会包括hostname以及query string; 这样实现的规则其实就类似于: rewrite ^/index/([\d+])/(.*).html$ /index.php?atype=$2&user=$1 last
我们来做一个测试
下面是我nginx中的基本配置:
location / { root html; index index.php index.html index.htm; }
修改一下WebServer的路由规则,添加下面的几条规则:
rewrite ^/index/$ /index.html last;
忘记如何重启nginx和fastcgi了,记录一下
sbin/nginx -h spawn-fcgi 输入这2个就会显示提示信息,按要求写就行了
测试结果:
http://192.168.187.129:8080/index/
:页面跳转到了index.html
上面的都是应该都懂,介绍是想测试一下自己的环境是不是正常,下面是正式的测试例子,添加如下路由规则:
rewrite ^/index/$ /index.html/ last; rewrite ^/index.html/$ /index.php last;
现象就是:
http://192.168.187.129:8080/index/
这个地址栏跳转的还是index.php,加了last之后还是继续匹配了下一条的重写规则
结论:last并没有结束一行匹配,不继续执行的意思。
下面验证这个情况:
上面的情况,先匹配了/index/,然后跳转到/index.html/, 然后继续跳转到index.php,但是并没有考虑到循环的情况, 存不存在匹配了之后继续从第一个继续匹配了,试一下。
修改一下规则:
rewrite ^/index$ /index.php last; rewrite ^/index/$ /index.html/ last; rewrite ^/index.html/$ /index last;
搞不懂,访问http://192.168.187.129:8080/index/居然出现了index.php的效果。
无论是Apache,还是Nginx,在对网站的路径重写时,匹配的过程是:
查看是否有匹配,如果不存在匹配,则直接执行。如果存在匹配,则执行匹配之后,再继续以新路径传递给服务器进行匹配。
相关文章推荐
- nginx代理指定目录
- 访问Nginx发生SSL connection error的一种情况
- Nginx+Naxsi部署专业级Web应用防火墙
- CentOS 6.2实战部署Nginx+MySQL+PHP
- Apache Isis 1.4.0 发布,领域驱动开发框架
- Linux快速构建apache web服务器
- Awstats处理多apache日志
- 安装perl模块小窍门
- 网站502与504错误分析
- 艰难完成 nginx + puma 部署 rails 4的详细记录
- PHP+Apache在Windows 9x下的安装和配置
- Apache服务器配置全攻略
- Apache Web让JSP“动”起来
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- wordpress rewrite问题解决
- apache 环境下 php 的配置注意事项
- web 应用中常用的各种 cache详解
- 在RedHat下安装apache jserv 1.1.2方法