【问题标题】:Rewrite Rule - add not precised number of parameters to a rule重写规则 - 向规则添加不精确数量的参数
【发布时间】:2013-11-02 06:33:08
【问题描述】:

是否可以制定这样的规则:

example.com/param1val/param2val/param3val/...

如下,许多参数。我不知道其中有多少,但我想将其重写为:

example.com/index.php?param1=param1val&param2=param2val&param3=param3val...

等等。是否有可能在一个规则中?

【问题讨论】:

  • 这些参数中是否总是包含文字 param
  • @anubhava:不,它们会多种多样,并且使变量名称与 URL 参数中给出的相同并不重要。它也可以是 index.php?a1=var1&a2=var2&a3=var3 等等。
  • 由于 mod_rewrite 无法生成带有计数器的字符串,因此您有 2 个选项:1)在 URL 中也包含参数名称或 2)保持参数名称与参数值相同

标签: .htaccess mod-rewrite


【解决方案1】:

根据我的评论,此答案适用于case 1)

RewriteEngine On

## reucrsion based rule to convert /user/n1/v1/n2/v2 to /user.php?n2=v2&n1=v1
RewriteRule ^(index\.php)/([^/]*)/([^/]*)(/.*)?$ /$1/$4?$2=$3 [L,QSA,NC]

【讨论】:

  • 这不是我真正想要的。例如,我希望 URL: 1/2/3/4 重写为 ?1=2&3=4 但也 1/2/3/4/5/6/7/8 重写为 ?1=2&3=4&5=6&7 =8。是否有可能在一个规则中?
  • 希望你在你的主机上试过这个。正如我所写,这是基于递归的规则,它甚至可以与 /1/2/3/4/5/6/7/8/1/2/3/4/5/6/7/8/9/10/11/12 等一起使用。
  • 以上/index.php/1/2/3/4/5/6/7/8将改写为:/index.php?7=8&5=6&3=4&1=2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多