Vars $ _GET不适用于.htaccess

时间:2012-02-28 14:02:28

标签: php .htaccess

我有一个包含以下内容的.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)。 我做了什么?

2 个答案:

答案 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] +)/ $

假设传入的网址为http://yourdomain.com/produto/blah123/456/