0

bingbotによる/wp-adminおよび/wp-login.phpへのアクセスを拒否しようとしていますが、nginxの構成に問題があります。私は次のことから始めました:

location ~ /(wp-admin|wp-login\.php) {
    if ($http_user_agent ~* "(alltheweb|baidu|bingbot|googlebot|msnbot|slurp)") {
        return 403;
        break;
    }
}

# Allow any php files to run
location ~ \.php$ {
    try_files $uri =404;
    include /etc/nginx/fastcgi.conf;
    fastcgi_pass unix:/var/lib/php/php.socket;
}

これは、bingbotをブロックする場合は問題なく機能しますが、実行されませんwp-login.php。静的ファイルのように扱います。「了解しました。それ以上のロケーションブロックに陥ることはありません」と思ったので、phpコードを上位のコードに複製しました。

location ~ /(wp-admin|wp-login\.php) {
    if ($http_user_agent ~* "(alltheweb|baidu|bingbot|googlebot|msnbot|slurp)") {
        return 403;
        break;
    }
    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi.conf;
        fastcgi_pass unix:/var/lib/php/php.socket;
    }
}

# Allow any php files to run
location ~ \.php$ {
    try_files $uri =404;
    include /etc/nginx/fastcgi.conf;
    fastcgi_pass unix:/var/lib/php/php.socket;
}

これにより、ダウンロードする代わりに再度ログインできるようになりましたwp-login.phpが、bingbotはHTTP200OKを再び取得しています。403またはphpハンドラーを適切に選択的に返すにはどうすればよいですか?

4

1 に答える 1

1

あなたは試すことができます

if ($http_user_agent ~* "(alltheweb|baidu|bingbot|googlebot|msnbot|slurp)") {
    location ~ /(wp-admin|wp-login\.php) {
        return 403;
    }
}

ただし、次のような設定を行うことをお勧めします。

location /spider_blocked {
    return 403;
}

if ($http_user_agent ~* "(alltheweb|baidu|bingbot|googlebot|msnbot|slurp)") {
    rewrite ^/(wp-admin|wp-login\.php) /spider_blocked redirect;
}

基本的に、あなたがしているのは、nginxの特別なcatch URLを設定し、特定のユーザーエージェントによってアクセスされた特定のURLにリダイレクトし、それを特別なcatchURLにリダイレクトしてブロックすることです。

于 2013-03-05T16:11:05.177 に答える