Как перенаправить определенные User agent на другой сайт?

Ссылка скопирована
1 ответ

Как перенаправить указанные посетителей на другой сайт?
Например заходит
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Mobile Safari/537.36
перенаправить -> google.com
или туда откуда пришел
Wordpress

Дополнительно:

Ответы:

if (window.navigator.userAgent.indexOf("Android") != -1)     window.location.href = "https://google.com/";

if (window.navigator.userAgent.indexOf("Android") != -1) window.location.href = "https://google.com/";

  • это в functions.php или index.php указать?
  • killmeslow, Это было для Javascript, то есть код из ответа надо было вставить в <script></script> в index, туда, где HTML код.
    Если надо для PHP, то в functions
    if(strpos($_SERVER["HTTP_USER_AGENT"], "Android")) {     header("Location: https://google.com/"); }

    if(strpos($_SERVER["HTTP_USER_AGENT"], "Android")) { header("Location: https://google.com/"); }

  • Это не имеет отношений ВП. А скрипты нельзя просто так взять и вставить. Итого - твой ответ в рамках ВП неверный и опасный.
    (и вообще редиректы делаются в хтацессе)
  • killmeslow, никуда это не пиши.
    Редирект делай в хтацессе. А твой вопрос простейший и легко гуглится.
  • Refguser, если на бэкенде не используется Апач, то твой ответ тоже неверный. И вообще, делать редиректы в .htaccess не лучшая практика. И лучше уж делать подобные редиректы их на уровне приложения ( как предложил alekssamos ), а не в .htaccess
  • Михаил Ливач, во первых хтацесс не только для апача,
    Во вторых если используется голый нжинкс, то соответственно это делается в его конфигах. Но вот в данном случае человек 99,(9)% что этого нет. Просто потому что для этого нужна некоторая квалификация, а человек с такой квалификацией не будет задавать таких вопросов.
    А в третьих - задавать такие простые релиректы на уровне сервера, а не уже загруженной страницы и есть лучшая практика.
  • Михаил Ливач, ну да. а потом бежим и спрашиваем - как это исправить.

    Javascript выполняется на стороне клиента. и чем его больше, тем тяжелее компьютеру. если есть возможность выполнить на севере, то так и надо делать. тем более, что есть еще php и конфиги nginx...

  • во первых хтацесс не только для апача

    Будьте добры, перечислите остальные популярные веб-серверы, которые поддерживают .htaccess ? ( Популярные - это с рыночной долей хотя бы в 1%.

    Просто потому что для этого нужна некоторая квалификация

    А ситуацию, когда человек просто купил (или ему предоставили) хостинг с конфигурацией nginx + PHP-FPM, Вы не рассматриваете?

    А в третьих - задавать такие простые релиректы на уровне сервера, а не уже загруженной страницы

    Я имел в виду редирект в PHP.
    И дело не в том, простой редирект или сложный. Дело в том, как вообще работает механизм UrlRewrite в Apache .

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь NetOps Ответ

Технически перенаправить по User-Agent можно на уровне JavaScript, PHP, nginx или .htaccess. Но делать это нужно очень осторожно: редиректы по User-Agent легко превращаются в клоакинг, ломают индексацию, раздражают пользователей и могут нарушать правила поисковых систем, если поисковик видит одно, а пользователи другое.

Если задача обычная — показать мобильным пользователям другую страницу, лучше делать адаптивную верстку или нормальный мобильный шаблон, а не редирект по строке User-Agent.

PHP-вариант:

add_action('template_redirect', function () {
    $ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
 
    if (stripos($ua, 'Android') !== false &amp;&amp; !is_admin()) {
        wp_redirect('https://example.com/', 302);
        exit;
    }
});

add_action('template_redirect', function () { $ua = $_SERVER['HTTP_USER_AGENT'] ?? ''; if (stripos($ua, 'Android') !== false &amp;&amp; !is_admin()) { wp_redirect('https://example.com/', 302); exit; } });

JavaScript-вариант:

if (navigator.userAgent.indexOf('Android') !== -1) {
  window.location.href = 'https://example.com/';
}

if (navigator.userAgent.indexOf('Android') !== -1) { window.location.href = 'https://example.com/'; }

На nginx можно через map, на Apache через RewriteCond. Но для WordPress проще и управляемее делать через template_redirect, если это действительно нужно.

Чтобы отправить «туда, откуда пришёл», используют HTTP_REFERER, но на него нельзя полагаться: он может быть пустым, поддельным или внешним. Делать редирект на referrer без проверки опасно, можно получить open redirect.

Если всё же используете referrer, проверяйте домен:

$ref = wp_get_referer();
if ($ref &amp;&amp; str_contains($ref, home_url())) {
    wp_safe_redirect($ref);
    exit;
}

$ref = wp_get_referer(); if ($ref &amp;&amp; str_contains($ref, home_url())) { wp_safe_redirect($ref); exit; }

И ещё: ставьте 302, а не 301, пока тестируете. 301 закэшируется браузерами и поисковиками, потом будет сложнее откатить.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно