查询字符串参数在友好 url 上的位置

Position of querystring parameters on friendly url

我不知道为什么这在这个 htaccess 规则中不起作用: 我希望友好的 url 可以获得 2 个查询字符串参数并且它工作正常,但问题是每个参数在查询字符串中的位置。

我不知道$2和$3的具体位置

这是要尝试的 url... http://myweb.com/ferrari-testarossa-car-id460?aa=red&bb=coupe

这是我的规则...

RewriteRule ^[A-Za-z0-9-\+\.]+-id([0-9]{1,5})[\?]?([a-z0-9\-\_]*[\=]?[a-z0-9]*[\.]?[a-z0-9]*)&([a-z0-9\-\_]*[\=]?[a-z0-9]*[\.]?[a-z0-9]*)$ car-profile.php?idModel=&& [QSA,L]

我需要像这样传递键和值(一起) "aa=red" y "bb=coupe"以 $2 和 $3

的形式到达目的地 url

我该怎么做?

1000 个感谢

根据您展示的示例,请您尝试以下操作。 请确保在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/.*id=(\d+)\?aa=([^&]*)&bb=(.*)\s [NC]
RewriteRule ^ car-profile.php?idModel=%1&%2&%3 [QSA,L]

终于.....我明白了!

这是正确的正则表达式:

RewriteRule ^[A-Za-z0-9-\+\.]+-id([0-9]{1,5})?$ car-profile.php?idModel= [QSA,L]

当我们放置标志“[QSA]”时,整个查询字符串将被连接到 $1 参数,因此,进入您的 php 页面,您可以获取典型 $GET["param"]

中的每个值

示例:对于此输入 url:

http://myweb.com/ferrari-testarossa-car-id460?bb=coupe&&aa=red

这将作为输出 url:

http://myweb.com/car-profile.php?idModel=460?bb=coupe&&aa=red

比我想象的要容易。

感谢大家