「折腾」Nginx 解析网址参数并跳转

吐槽/反馈/建议:咸鱼哪有心    爱发电-@wdssmq

演示网址: https://demo.wdssmq.com/?id=2887

对于如上地址,在 Apache 下可以使用如下规则重定向(301)到伪静态地址。

RewriteCond %{QUERY_STRING} ^id=(.+)$ # 这里的引用是 %1 而不是 $1
RewriteRule ^$ /post/%1.html [L,R=301]

至于 Nginx,同时有$query_string$args两个变量用于获取网址参数,效果好像是一样的;

注:$arg_id.html后的?表示跳转后不携带原来的网址参数;

# page + post
if ($args ~* "id=\d+") {
    rewrite ^/$ $scheme://$host/post/$arg_id.html? permanent;
}

↑↑上述代码的 if 语句中使用了正则判断,但是并没有对匹配结果进行捕获,而是使用了$arg_id直接获取到了相应值,同理其他参数也可以使用$arg_参数名来获取。

演示地址实际跳转了两次,第二次由 id 跳转到了别名,该效果由插件[改版助手 - Z-Blog 应用中心]实现。。

2022-05-11:

当年写这篇记录时还没弄 md2zb 体系来发文章,然后因为 301 会被浏览器缓存,清理的时候一并清掉了登录状态,结果编辑好文章发布时失败了。。

正确的清理姿势见:「水坑」浏览器内清理特定网站的 301 缓存_电脑网络_沉冰浮水


爱发电

本文标题:《「折腾」Nginx 解析网址参数并跳转》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20201107566.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

召唤伊斯特瓦尔