我们必须从这个URL重定向:
https://www.ourdomain.com/event/just-an-event-600922?test=620c3c875ceb1ae584920c04d02bc083
在没有查询字符串的情况下:
https://www.ourdomain.com/event/just-an-event-600922
我们已经尝试了RewriteCond和RewriteRule的组合:
RewriteCond %{QUERY_STRING} ^test=([A-Za-z0-9]+)$
RewriteRule ^event/just-an-event-600922$ https://www.ourdomain.com/event/just-an-event-600922 [L,R=301]
但它显然会导致一个无限循环。有办法解决吗
2条答案
按热度按时间zd287kbt1#
你很接近了,但你错过了最后的
?
。实际上,在重定向时会自动追加查询字符串,从而导致循环。通过使用?
,您可以重置查询字符串。所以,你的解决方案是:
注1:你不需要通过使用括号来匹配和记住
test
值,因为你不使用它。注意2:你可以匹配RewriteRule,这样你就不需要为重定向目标再写一次了(注意最后的
?
,这实际上是你最初问题的关键)。xurqigkl2#
您可以删除
R=301
,然后它不会将浏览器重定向到新的URL,而是在内部重写它并使用新的查询字符串调用您的Web应用程序。另一个选择是简化它: