我有一个包含以下内容的.htaccess文件:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^produto/([a-z0-9-]+)/([0-9]+)/?$ /teste/testeproduto/produto.php?id=$2&nome=$1 [NC]
在我的php文件中我正在使用它:
print_r($_GET);
但它不起作用(获得$ _GET vars)。 我做了什么?
答案 0 :(得分:3)
您应该在RewriteRule的末尾使用[QSA,NC]而不是[NC],将查询字符串(问号后面的部分)添加到重定向的URL。
来自Apache 2.2文档(http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_qsa):
当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会导致查询字符串合并。
答案 1 :(得分:0)
我相信你的字符串中至少有一个语法错误。首先,我认为你需要一个前导斜杠,其次你不需要尾随问号,除非你试图使尾随斜杠可选。结合起来,这两个元素可能会影响模式匹配。
RewriteRule ^ / produto /([a-z0-9 - ] +)/([0-9] +)/ $