我想做一个mod_rewrite网址转换。我想直接
http://localhost/events?user=XXX&start=YYY&total=ZZZ
到
http://localhost/?operation=events&user=XXX&start=YYY&total=ZZZ
我目前在.htaccess
中使用的是:
RewriteRule
^events\?userid=([0-9]+)&start=([0-9]+)&total=([0-9]+)$
?operation=events&user=$1&start=$2&total=$3
[L]
但它似乎没有起作用。
我也尝试了一个更简单的版本:
RewriteRule ^events\?([a-zA-Z0-9&=]+)$ ?operation=events&$1 [L]
但它也无效。
¿我怎样才能将查询参数逐个“转移”或,否则将整个查询字符串转移到有向路径的末尾?
答案 0 :(得分:2)
我如何"转移"要么查询一个一个,要么整个查询字符串到有向路径的末尾?
这是使用QSA
标志完成的。 QSA
(查询字符串追加)标志在添加新查询参数时保留现有查询参数。
但请记住,您无法使用RewriteRule
指令匹配查询字符串。您只能使用RewriteRule
匹配请求URI。
您可以使用此规则:
RewriteEngine On
RewriteRule ^/?events/?$ ?operation=userevents [L,NC,QSA]
这会将http://localhost/events
URI路由到http://localhost/?operation=userevents
将所有原始查询参数附加到重写的URI。例如:http://localhost/userevents?user=XXX&start=YYY&total=ZZZ
将被重写为http://localhost/?operation=events&user=XXX&start=YYY&total=ZZZ