我的.htaccess代码
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?key=$1
我的 index.php 代码如下所示
<?php
$key=isset($_GET['key']) ? $_GET['key'] : 'home';
if( in_array( $key, array('home','about','terms') ) ){
include("$key.php");
}else{
include("profile.php");
}
?>
何时使用“http://localhost/project_dir/home”工作正常(将home分配给参数'?key')。但我想传递额外的论据,如“http://localhost/project_dir/home?a=abc123”
我怎样才能得到参数“a”($_GET['a']
)?
答案 0 :(得分:1)
查看flags - in particular, QSA
:
<强> QSA | qsappend 强>
当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会导致查询字符串合并。
考虑以下规则:
RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
使用[QSA]标记,
/pages/123?one=two
的请求将映射到/page.php?page=123&one=two
。如果没有[QSA]标志,相同的请求将映射到/page.php?page=123
- 也就是说,现有的查询字符串将被丢弃。Apache手册,©2016 Apache Software Foundation,Apache License 2.0
因此,请将.htacess
规则更改为:
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?key=$1 [QSA]