nginx rewrite 配置

把www.ikscher.com/index.php?route=product/product&product_id=123 重定向到

  www.ikscher.com/product/product&product_id=123


 规则如下:

  if ($request_uri ~* "(.*)index\.php\?route=(.*)"){
      set $host_ $1;
      set $last_ $2;
      rewrite (.*)  $host_$last_? permanent; #这里的.*代表的是url的原先地址,即要转向的url地址。
  }

  有几个知识点:


1:Rewrite的Flags
last -将rewrite后的地址重新在server标签执行
break - 中止Rewirte,不再继续匹配
redirect - 返回临时重定向的HTTP状态302  url地址栏地址 为重定向后的地址
permanent - 返回永久重定向的HTTP状态301  url地址栏地址 为重定向后的地址(对POST传值可能会产生问题)


2:这段规则直接下到server里面,if后面必须有空格,否则报语法错误。

3:正则表达式的  点和问号都需要\斜杠转义。

4:nginx的问号处理,假如现在我要重定向到www.ikscher.com/?route=product/product&product_id=123

nginx在进行rewrite的正则表达式中只会将url中?前面的部分拿出来匹配,匹配完成后,

?后面的内容将自动追加到url中(包含?),如果不让后面的内容追加上去,请在最后加上?即可。如果想要?后面的内容时请使用$query_string

在这里提醒一点,调试的时候在rewrite的最后一个配置项中不要使用break last这些,使用redirect可以看到转换后的地址。综合以上几点,使用的配置项为

   rewrite (*.)index.php(.*)    $1$query_string? permanent;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值