事实上我正在研究一个小的PHP脚本,现在我正在努力使用mod-rewrite进行重定向。 我想要的是重定向
int welcomeScreen ()
到
www.xx.com/motivational/api.php?latest=1
我尝试了这个,但它不起作用:
www.xx.com/api.php?latest=1&app=motivational
答案 0 :(得分:2)
%{QUERY_STRING}
代表整个查询字符串,在您的情况下为latest=1
。因此,当您在替换字符串中将其附加到...?latest=
时,结果为...?latest=latest=1
,这不是您想要的。
将规则更改为
RewriteRule ^/motivational/api\.php$ /api.php?%{QUERY_STRING}&app=motivational
你应该没事。
或者你可以这样做:
RewriteRule ^/motivational/api\.php$ /api.php?app=motivational [QSA]
QSA
标记表示将新查询字符串附加到旧查询字符串,而不是替换它,因此您的latest
变量不会丢失。
答案 1 :(得分:1)
你无法匹配RewriteRule中的查询字符串,你需要一个RewriteCond来匹配url中的查询字符串:
RewriteEngine on
RewriteCond %{THE_REQUEST} /([^/]+)/api\.php\?latest=1 [NC]
RewriteRule ^ /api.php?latest=1&app=%1 [NC,L,R]
%1是正则表达式的一部分"([^ /] +)"在RewriteCond中,它包含请求行中的动态捕获路径。