如何调整RewriteRule的参数?

时间:2014-12-14 12:54:12

标签: .htaccess mod-rewrite

我有这个网址:

http://example.org/wiki/index.php?title=Special:UserLogin
&returnto=Special%3AWatchlist&returntoquery=&warning=watchlistanontext

我想将请求重定向到:

https://example.org/login/wiki/?returnTo=Special%3AWatchlist

部分title=Special:UserLogin是应该触发RewriteRule的部分。其他参数可以改变(尤其是returnto=xxx的值);应该为目标URL保留它。参数returnto=xxx应映射到目标网址中的returnTo=xxx(大写" T")。

阅读the docs后,我尝试了这个RewriteRule

RewriteCond %{QUERY_STRING} title=Special:UserLogin&?(.*)
RewriteRule index.php https://example.org/login/wiki/?%1 [R=301,L]

据我所知,除了一件事之外,这基本上也在起作用:returnto参数仍然是returnto而不是returnTo。如何更改参数名称的大小以修复它?

1 个答案:

答案 0 :(得分:1)

您需要修复正则表达式才能捕获正确的查询参数。您可以使用此规则:

RewriteCond %{QUERY_STRING} (?:^|&)title=Special:UserLogin(?:&|$) [NC]
RewriteCond %{QUERY_STRING} (?:^|&)returnto=([^&]+) [NC]
RewriteRule ^index\.php$ https://example.org/login/wiki/?returnTo=%1 [R=301,L]