Как перенаправить определенные User agent на другой сайт?
Как перенаправить указанные посетителей на другой сайт?
Например заходит
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, то в functionsif(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 .
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Технически перенаправить по 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 && !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 && str_contains($ref, home_url())) { wp_safe_redirect($ref); exit; }
И ещё: ставьте 302, а не 301, пока тестируете. 301 закэшируется браузерами и поисковиками, потом будет сложнее откатить.