.htaccess操作查询字符串

时间:2015-06-04 13:19:29

标签: regex apache .htaccess url-rewriting

根据此维基 - https://wiki.apache.org/httpd/RewritePathInfo - 它显示了如何将URL路径更改为查询字符串:

RewriteEngine On
 RewriteRule ^/blah/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?  \
  /blah.php?arg1=$1&arg2=$2&arg3=$3&arg4=$4 [PT]

此方法要求您预测确切的数量,因此如果5个值有5个级别:

/blah/1/2/3/4/5/

翻译为

blah.php?var1=1&var2=2&var3=3&var4=4&var5=5

有没有办法在不知道变量数量的情况下做到这一点,几乎是动态的?

例如,有一天用户可能会输入7,另一天1,另一天9和ReWrite Regex能够全部处理它们吗?

1 个答案:

答案 0 :(得分:3)

要使其完全动态,您不应该打扰将PATH信息分解为多个查询参数。只需将blah/之后的所有内容传递到您的php文件,然后让php在/上进行拆分。所以你可以使用这个规则:

Options -MultiViews
RewriteEngine On

RewriteRule ^/?(blah)/(.+)$ $1.php?path=$2 [L,QSA,NC]