我有以下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
但它没有做任何事情。
有什么想法吗?
由于
答案 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允许它传递查询字符串。 正确?