Mod重写问题重定向与post

时间:2016-02-28 21:55:45

标签: php apache mod-rewrite

事实上我正在研究一个小的PHP脚本,现在我正在努力使用mod-rewrite进行重定向。 我想要的是重定向

int welcomeScreen ()

www.xx.com/motivational/api.php?latest=1 

我尝试了这个,但它不起作用:

www.xx.com/api.php?latest=1&app=motivational

2 个答案:

答案 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中,它包含请求行中的动态捕获路径。