![如何在 Nginx 中使用查询字符串进行重定向以进行分页](https://linux22.com/image/741755/%E5%A6%82%E4%BD%95%E5%9C%A8%20Nginx%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%9F%A5%E8%AF%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BF%9B%E8%A1%8C%E9%87%8D%E5%AE%9A%E5%90%91%E4%BB%A5%E8%BF%9B%E8%A1%8C%E5%88%86%E9%A1%B5.png)
我想从
https://www.example.com/blog?page=2
到
https://www.example.com/blog/page/2
我尝试使用这个配置:
location = /blog {
if ($args ~* “page=(.*)") {
rewrite ^ /blog/page/$arg_page? permanent;
}
}
它不会转到第二页(它停留在第一页),并且 url 仍然是/blog?page=2
。所以它根本不起作用。
有什么想法吗?谢谢
答案1
永远不要将块放在if
内部location
。这只会导致意想不到的结果。
在上下文中, sif
非常安全server
。但是,这可能也不起作用。尝试:
server {
...
if ($arg_page ~ "\d+") {
rewrite ^/blog$ /blog/page/$arg_page? permanent;
}
...
}
PS 如果你可以在特定情况下使用可以做的map
事情if
,那么一般来说,你应该map
只使用。(在你的情况下你不能:)