Перенаправить на страницу входа, если пользователь не вошел в систему, но не перенаправляет googlebot

Как я могу это сделать? Вы не можете получить доступ к сайту без участника, но бот Google может войти. Как я могу это сделать? Вы не можете получить доступ к сайту без участника, но бот Google может войти. Я попытался создать переменную и исключить IP-адрес, но мне это не удалось.

Попробуйте добавить honeypoint, скрыть ссылку в robots.txt и т. д. Я рекомендую попробовать поиграть с плагином All In one WP Security (для этого есть встроенные инструменты).

Nik Horse 09.01.2019 08:27
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
0
1
152
1

Ответы 1

Лучше всего тестировать использование обратного поиска DNS, так как Пользовательский агент может быть подделан. PHP делает это довольно просто, вот образец теста:

// $ip = $_SERVER['REMOTE_ADDR']; // Use to check the visitor IP
$ip = '66.249.66.1'; // Sample Google IP from their docs
$host_name = gethostbyaddr($ip);
$is_google = strpos($host_name, 'google') !== false ? 'is' : 'is <b>NOT</b>';

echo "<p>$host_name</p>";

echo  "<p>IP Address $is_google Google</p>";

Теперь мы можем проверить, вошел ли пользователь в систему и не является ли он ботом Google. С помощью хука WordPress template_redirectРекомендовано. Добавьте это в свой файл темы functions.php:

/**
 * Redirect the user to login if they are not logged in and not a google bot
 */
function redirect_not_logged_in_not_google() {
    $host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']);
    if ( strpos($host_name, 'google') === false && !is_user_logged_in() ) {
        wp_redirect( home_url( '/login/' ) );
        die;
    }
}
add_action( 'template_redirect', 'redirect_not_logged_in_not_google' );

Я пробовал ваш код, но он не работал. Перенаправлен на страницу входа в Google IP. resmim.net/f/pzBW5C.png?v=10201914210403000300

Arthur Frank Asabiyovic 10.01.2019 12:21

Таким образом, похоже, что у вас есть и образец кода тестирования, и функция / действие redirect_not_logged_in_not_google() в вашем functions.php. Если вы хотите протестировать его вживую в теме WordPress, вам придется изменить $host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']); на $host_name = gethostbyaddr('66.249.66.1');, где '66.249.66.1' - это образец IP-адреса Google. В настоящее время вы все еще будете перенаправлены на страницу /login, потому что вы просматриваете свой сайт не из Google. ;-)

Mario Giancini 10.01.2019 20:37

Другие вопросы по теме