nginx有10个以上参数rewrite的处理

本文详细解析了Apache和Nginx环境下URL重写规则的使用方法,包括如何利用正则表达式实现参数的拆分和重组,并通过实例展示了如何获取特定位置的参数值。文章还提供了多种URL重写策略的实现方式,旨在帮助开发者更高效地处理URL路由和参数解析任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.给匹配结果加个名字,按名字访问
写法:(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
rewrite ^/resume(\d)?(t(\d*))?(c(\d*))?(p([0-4]))?(v([0-1]))?/(?<resId>\d+)\.html$ /search/lib/result.xhtml?presentStatus=$1&licenceType=$3&nowPC=$5&t=$7&isVal=$9&resId=$resId  break;
所以:把第10个参数最后用名字访问,结果是OK的,
2.把重写语句拆成多个,参考别人的,没测试过
location /
{
    if (!-e $request_filename)//若访问的地址不是确切存在的某文件,则执行里面的重写规则
    {
        rewrite ^/(.)(.)(.)(.)(.)(.)(.)(.)(.*)$ /tempkey0/a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8&tempkey1=$9;
        //第一条重写语句:将前八个先重写,然后将后面的全打包,放在tempkey1里面,同时将所有的重写语句打包在tempkey0里
    }
    rewrite ^/tempkey0/(.*?)&tempkey1=(.)(.)(.)$ /test.php?$1&i=$2&j=$3&k=$4;
    //第二条重写语句:获取tempkey0,得知需要重写,将前八个打包放在$1里,然后从tempkey1里匹配出从第九个开始的字符,放在$2开始的组里。最后将获得的参数加在test.php后,得最终结果
}



3.
 获取 http://www.jms.com/wk/jack-tom-4-5-6-7-8-9-jack.html 第10位的参数“jack”是name的值。如何获取到值jack呢。

在apache下:

<IfModule mod_rewrite.c>  
RewriteEngine On  
RewriteRule ^(.*)/(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(.*)   $1/$9 [C,NC]  
RewriteRule ^(.*)/(\w+)-(\w+).html   $1/p.php?name=$3 [L]  
</IfModule>

在nginx下rewrite可以写成:

rewrite ^(.*)/(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(\w+)-(.*)   $1/$9 ;  
    rewrite ^(.*)/(\w+)-(\w+).html   $1/p.php?name=$3 last;



nginx找个时间系统的看本书!



转载于:https://my.oschina.net/wrean/blog/417588

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值