在监控传入的 404 和重定向时记录特定 IP 的错误

Log errors for specific IP while monitoring incoming 404 and redirect

我在我的 WordPress 网站上安装了一个插件,它记录 404 并重定向到类似的页面。下面是执行日志记录的插件部分:

function log($query){
        
    if (defined('WP_DEBUG_LOG') && WP_DEBUG_LOG) {
        ini_set( 'error_log', WP_CONTENT_DIR . '/redirect.txt' );
    }
        
    if(empty($query['settings']['log']) || !WP_DEBUG || !WP_DEBUG_LOG)
        return;
        
    $request_url = home_url() . $query['request']['url'];
    $redirect = $query['redirect']['url'];    
    $ip = $_SERVER['REMOTE_ADDR'];
        
    error_log('//' . $ip . '//' . $request_url . '//' . $redirect . '//');
        
} 

我只想记录特定传入 IP 的错误,例如,我只想记录 111.11.111.11 的错误。应忽略其他 IP。

如何将其合并到上面的代码中

你可以这样做

    $request_url = home_url() . $query['request']['url'];
    $redirect = $query['redirect']['url'];    
    $ip = $_SERVER['REMOTE_ADDR'];
    
    if ($ip == '111.11.111.11') {
         error_log('//' . $ip . '//' . $request_url . '//' . $redirect . '//');
    }

您可以定义一个数组,其中包含您打算支持日志记录的 IP 地址,例如:

$logips = ['111.11.111.11'];

然后检查 IP 地址是否在该数组内:

if (in_array($_SERVER['REMOTE_ADDR'], $logips)) {
    error_log('//' . $ip . '//' . $request_url . '//' . $redirect . '//');
}

这样您就可以在添加新 IP 地址或删除旧 IP 地址时只修改数组的内容,同时逻辑将保持可靠。此外,建议将此设置为应用程序设置,因为 tester/developer 可能在应用程序的其他部分也有其他特殊行为。