我目前将 WordPress 文件 wp-login.php 限制为仅限我的 IP 地址 - 但如果存在给定的 URL 参数,我想允许访问该页面。
所以本质上这就是我尝试过的
location ~ ^/(wp-admin|wp-login\.php) {
if ($arg_action = "true") {
break;
}
allow xx.xxx.xxx.xxx;
deny all;
// fastcgi_params
}
因此,在此代码片段中,如果用户访问 wp-login.php?action=true,则页面应显示。但如果用户访问 wp-login.php,则应被拒绝。
但是此代码不起作用,如有任何提示我将不胜感激。
答案1
这应该对你有用,检查arg
是否找到它返回error 418
,然后将其移交给指定的位置iplocation
,然后检查 ips 并完成其余配置
error_page 418 = @iplocation;
recursive_error_pages on;
location ~ ^/(wp-admin|wp-login\.php) {
if ($arg_action = "true") {
return 418;
}
location @iplocation {
allow xx.xxx.xxx.xxx;
deny all;
// fastcgi_params
}
答案2
问题是休息仅退出 if{}。它不会退出位置。
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#break
该代码应该可以工作:
location ~ ^/(wp-admin|wp-login\.php) {
if ($arg_action != "true") {
return 403;
}
allow xx.xxx.xxx.xxx;
deny all;
// fastcgi_params
}
編輯:修正了拼写错误。