Nginx 版本相当于相当复杂的 Apache 重写规则

Nginx 版本相当于相当复杂的 Apache 重写规则

我在尝试让特定的 apache 重写规则块在 nginx 上工作时遇到了一点噩梦。

它用于阻止和保护 Wordpress 管理员。尝试过几个在线工具,但这些工具都没有帮助。任何帮助都很好。

这是原来的规则..

RewriteRule ^something-login/?$ /wp-login.php?fddf8778tbb [R,L]

RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)/wp-login\.php
RewriteCond %{QUERY_STRING} !^fddf8778tbb
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$

RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?fddf8778tbb [R,L]

以下是我为 nginx 提供的内容

location / {
    index       index.php;
    try_files   $uri $uri/ /index.php?$args;
}

location ~ ^/(wp-admin|wp-login\.php) {

    # IF ARG STRING NOT SET
    if ($args != "fddf8778tbb") {
        # DIE
        return 301 https://$server_name/404;
    }
}

location /something-login {
    rewrite ^/something-login/?$ /wp-login.php?fddf8778tbb redirect;
}

相关内容