我正在进入.htaccess网址重写。我无法详细说明:
我在两个条件之间改变
RewriteRule ^(.*)$ index.php?action=$1
RewriteRule ^(.*)/([0-9]+)/?$ index.php?action=$1&product_id=$2
在相同的样本网址 http://www.my-domain.cz/products/5
上使用在我的PHP脚本中,我打电话给echo var_dump($_GET)
,以便在重写后查看其中的内容。
我得到的第一条规则:array(1) { ["action"]=> string(9) "index.php" }
我得到的第二条规则:array(2) { ["action"]=> string(8) "products" ["product_id"]=> string(1) "5" }
第一条规则有什么问题,它只显示" index.php" (并且不管给定的URL)。我相信正则表达式中的圆括号应该在第一次斜杠之后取出所有内容(" products / 5")并将其填入$ _GET [" action"]字段,这样我就可以使用稍后在PHP脚本中。为什么没有发生?在第二条规则中有什么不同,它在这里按预期工作?
顺便说一下:第一条规则取自一篇关于"好网址的文章"并且应该做我写的。但显然,它没有。