的.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.
如何获取变量代码?
答案 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]标志会导致查询 要组合的字符串。