使用mod_rewrite将基于GET的搜索参数添加到url

时间:2016-04-19 17:00:46

标签: .htaccess mod-rewrite get apache2

我正在研究使用mod_rewrite提供漂亮网址的cms。基本用例只需要任何路径并将其重写为单独的GET参数,如下所示:

RewriteRule ^search?(.+)[/]?$ index.php?p1=search$1[L]

我还有一个发送GET请求的搜索表单,但我不知道如何将其添加到重写规则中。例如:

http://site.domain/search?query=abc

应重写为:

http://site.domain/index.php?p1=search&query=abc

我尝试了以下内容,但有一些变体,但搜索参数不会出现在$ _GET中,因为它已被驱逐:

$user = User::create($data);
$mailer->sendEmailConfirmationTo($user);
Auth::logout(); //logout please!
return "account created!";

1 个答案:

答案 0 :(得分:2)

更改[L]

的所有[L,QSA]
  

QSA | qsappend 当替换URI包含查询字符串时,   RewriteRule的默认行为是放弃现有查询   string,并将其替换为新生成的字符串。使用[QSA]   flag导致查询字符串被组合。   http://httpd.apache.org/docs/2.2/rewrite/flags.html