Vars$_GET不适用于.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变量)。我做什么?

您应该在重写规则的末尾使用[QSA,NC]而不是[NC],将查询字符串(问号后面的部分)添加到重定向的URL中。

来自Apache 2.2文档(http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_qsa):

当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志可以组合查询字符串。

我相信您的字符串中至少有一个语法错误。首先,我认为你需要一个前导斜杠,其次,除非你想让尾随斜杠成为可选的,否则你不需要尾随问号。在组合中,这两个元素可能会影响模式匹配。

重写规则^/produto/([a-z0-9-]+)/([0-9]+)/$

假定传入URL为http://yourdomain.com/produto/blah123/456/

最新更新