是否需将原始请求URL加入Nginx重写规则?及规则改写需求
Nginx规则更新与原始请求URL处理方案
嘿,针对你提到的需求,我来给你梳理清楚怎么修改Nginx规则,以及是否需要加入原始请求URL的建议:
一、更新重定向URL到目标地址
这部分操作很直接,你只需要找到现有Nginx规则里负责重定向的return指令,把里面的旧登录URL替换成你的新目标地址就行。
举个例子,假设原来的规则片段是这样的:
if ($http_cookie !~* "wordpress_logged_in_") { return 302 https://www.example.com/login/; }
把其中的https://www.example.com/login/换成你的新地址(比如https://www.example.com/new-login-page/),修改后就变成:
if ($http_cookie !~* "wordpress_logged_in_") { return 302 https://www.example.com/new-login-page/; }
二、是否需要加入原始请求URL到重写规则?
非常推荐你加上!这能让用户在登录成功后直接跳转到他们最初想要访问的页面,避免用户登录后还要手动寻找目标路径,体验会好很多。
具体做法是在重定向的URL后面拼接一个redirect_to参数,值用Nginx内置的$request_uri变量(这个变量会完整保存用户的原始请求路径和附带的参数)。修改后的规则示例如下:
# 假设受限制的文件夹路径是/wp-content/restricted/ location ~ ^/wp-content/restricted/ { # 检查用户是否已登录(通过WordPress的登录Cookie判断) if ($http_cookie !~* "wordpress_logged_in_") { # 重定向到新登录页面,同时携带原始请求URL return 302 https://www.example.com/new-login-page/?redirect_to=$request_uri; } # 已登录用户则正常访问文件 try_files $uri $uri/ =404; }
不用担心WordPress那边的处理,因为WP的登录页面默认就支持redirect_to参数,只要这个参数正确传递,用户登录成功后会自动跳转到对应的原始页面,不需要额外修改WP的代码。
内容的提问来源于stack exchange,提问作者Garconis
相关产品推荐
相关产品推荐

