Redirect 301 /search?q=avengers https://www.example.com/?s=avengers
无法将查询字符串与mod\\u别名匹配
Redirect
(或
RedirectMatch
) 指令。这个
Redirect
指令仅与URL路径匹配。您需要使用mod\\u重写并匹配
QUERY_STRING
服务器变量。
例如:
RewriteCond %{QUERY_STRING} ^q=avengers$
RewriteRule ^search$ /?s=avengers [R=301,L]
这需要在现有WordPress前端控制器之前进行。
上的斜杠前缀RewriteRule
模式有意省略。^search$
匹配URL路径/search
在a中.htaccess
上下文
然而,由于WordPress已经使用mod\\u rewrite(前端控制器等),因此您也应该使用mod\\u rewrite来进行这些重定向,而不是使用mod\\u alias。在请求过程中,不同的模块在不同的时间执行,因此最终可能会出现意外的冲突。(你可能发现你可以把另一个Redirect
世界上任何地方的指令.htaccess
文件,它仍然“工作”-这不是特别直观。)
您尝试过RedirectMatch 301吗<不,因为我正在重定向特定的URL,而不是模式。
旁白:这个论点站不住脚。“模式”可以匹配特定的URL(事实上,这样做更容易)。上面的mod\\u rewrite指令使用“patterns”(即regex),但只匹配您指定的确切URL。事实上Redirect
也不匹配“特定URL”-它是前缀匹配(整个路径段),因此您可以发现Redirect
实际上比你想象的要匹配得多!