我有这个网址:
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
。如何更改参数名称的大小以修复它?
答案 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]