mod_rewrite传递变量

时间:2009-10-20 23:06:40

标签: php mod-rewrite

我有以下mod_rewrite规则:

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1

这可以很好地将/ blabla之类的内容重定向到/search.php?action=procedure&procedureName=blabla

问题是有时我想传递一个'start'值(用于分页)。例如,/ blabla /?start = 20。

目前,它只是忽略它。打印出$ _REQUEST数组不会显示“start”。我尝试将规则修改为:

RewriteRule ^([^/.]+)/\?start=([0-9]+)$ search.php?action=procedure&procedureName=$1&start=$2
RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1

但它没有做任何事情。

有什么想法吗?

由于

3 个答案:

答案 0 :(得分:11)

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 [L,NC,QSA]

QSA表示查询字符串追加,它会附加你传递的$ _GET变量。否则,通常不会添加它们。

答案 1 :(得分:2)

RewriteRule适用于路径。您需要使用RewriteCond来匹配查询字符串。

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

或者只是传递查询字符串,使用%{QUERY_STRING}

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1&%{QUERY_STRING}

答案 2 :(得分:1)

其实我觉得我找到了答案:

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 [QSA]

QSA允许它传递查询字符串。 正确?