nginx url rewrite之thinkphp示例

nginx url rewrite

Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。

通过Rewrite规则,可以实现规范的URL、根据变量来做URL转向及选择配置。

  • PCRE

    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。


在使用thinkphp时,我们可能会用到url rewrite。例如:
 location / {
            root   html;
            if (!-e $request_filename)
            {
                #地址作为将参数rewrite到index.php上。
               #rewrite ^/(.*)$ /index.php/$1;
                #若是子目录则使用下面这句,将subdir改成目录名称即可。
                rewrite ^/ceshi/(.*)$ /ceshi/index.php/$1;
                rewrite ^/myblog/(.*)$ /myblog/index.php/$1;
                #rewrite ^/go/(.*)$  /go/index.php/$1;
            }
            index  index.html index.htm;
            #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则

        }
符号功能
~区分大小写匹配
~*不区分大小写匹配
!~区分大小写不匹配
!~*不区分大小写不匹配
^以什么开头的匹配
^~只需要前半部分匹配
=完全匹配
$以什么结尾的匹配
|转义字符
- `/ ` 匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配 - `^~ /images/ ` 不区分大小写匹配任何以/images/开头的任何查询并且停止搜索。任何其他正则表达式将不会被测试 - `~* .(gif|jpg|jpeg) .gif.jpg.jpeg \.php ` 区分大小写匹配任何以.php结尾的请求 - `~ \.php` 区分大小写匹配任何包含.php的请求

nginx正则示例

  • /
    匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配
  • ^~ /images/
    匹配任何已/images/开头的任何查询并且停止搜索。任何其他正则表达式将不会被测试

    • ~* .(gif|jpg|jpeg)$
      匹配任何已.gif、.jpg 或 .jpeg 结尾的请求

nginx正则如何测的$1,2等参数

nginx使用PCRE的正则,所以可以通过以下两种:
实例:
- rewrite内容 rewrite ^/ceshi/(.*)$ /ceshi/index.php/$1;
- 正则内容 /^\/ceshi\/(.*)$/
- 测试匹配 /ceshi/Service/Analysis/show
- https://regex101.com/#pcre
/^\/ceshi\/(.*)$/正则的匹配分析
ana
- 使用php代码

$reg = "/^\/ceshi\/(.*)$/";
$testData = "/ceshi/Service/Analysis/show";
preg_match($reg, $testData, $matchs);
print_r($matchs);
#输出
Array
(
    [0] => /ceshi/Service/Analysis/show
    [1] => Service/Analysis/show
)

通过以上两种工具可以的到,$1=Service/Analysis/show,rewrite后地址为:/ceshi/index.php/Service/Analysis/show;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值