.htaccess无法捕获GET参数

时间:2014-06-29 22:58:14

标签: php .htaccess get

的.htaccess

RewriteRule ^apply/import?$ index.php?action=import [NC]
RewriteRule ^apply/import/([0-9a-zA-Z]+)/?$ index.php?action=import&code=$1 [NC]

我运行以下网址&print_r($ _ GET)

"localhost/apply/import" //Prints Array ( [action] => import ) as expected

"localhost/apply/import?code=abc123" // Prints Array ( [action] => import ) only, and is missing code.

如何获取变量代码?

1 个答案:

答案 0 :(得分:3)

使用"localhost/apply/import?code=abc123",匹配第一个规则(您可以通过删除第二个重写代码来检查它)
如果你想触发第二次重写规则,你应该尝试像localhost/apply/import/abc123这样的结果:

数组([action] => import [code] => abc123)

更新:我认为这可以解决您的问题:
您可以使用[QSA]在第一个重写规则中获取额外的查询字符串参数:

RewriteRule ^apply/import?$ index.php?action=import [QSA]

然后转到localhost/apply/import?code=abc123会输出:
数组([action] => import [code] => abc123)

您可以阅读有关RewiteRule Flags的更多信息。以下是解释:

  

当替换URI包含查询字符串时,默认行为   RewriteRule是丢弃现有的查询字符串,并替换它   与新生成的一个。使用[QSA]标志会导致查询   要组合的字符串。