[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Редирект на mobile.html для мобильных браузеров
Bony
Здравствуйте, форумчане!

Код приведен ниже, он работает, но редирект происходит со всех страниц сайта.
А нужно, чтобы редирект был только с главной страницы (site.com) на страницу (site.com/mobile.html), по условию, что юзер зашел (или перешел с внутренних страниц сайта) на главную страницу сайта через мобильный браузер.

Если юзер зашел не с мобильного браузера, редиректа нет.
Если юзер зашел с мобильного браузера на любую страницу сайта, кроме главной, редиректа нет.

Код размещается в самом начале файла index.php в каталоге с шаблоном или в корне:

<?
if (preg_match("/(Android|iPhone|iPad|iPod|IEMobile)/i", $_SERVER["HTTP_USER_AGENT"])>0) {
header("Location: http://site.com/mobile.html"); exit;
}
?>

Буду признателен, кто поправит код. Плюс в карму! smile.gif
walerus
Bony Топик создан в разделе "взаимопомощь", чем готов помочь?...
<? 
if (preg_match("/(Android|iPhone|iPad|iPod|IEMobile)/i", $_SERVER["HTTP_USER_AGENT"])>0) {
header("Location: http://site.com/mobile.html"); exit;
}
?>
почему так создано условие?, а именно > 0, Вы в курсе как работает оператор "preg_match" ?
Цитата
Код размещается в самом начале файла index.php в каталоге с шаблоном или в корне:
т.е. через этот индекс идет все "управление", а значит нужно "определять" какая страница в данный момент будет "генерироваться"... следовательно Ваше условие - не полное.
Bony
Я же написал, плюс в карму smile.gif

Код не мой, если кто-то знает, как поправить, буду признателен.

Попробовал эту же задачу решить по другому.

Прописал в .htaccess правило:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Android|iPhone|iPad|iPod|IEMobile) [NC]
RewriteRule ^$ http://site.com/mobile.html [R=301,L]

Редирект с site.com на site.com/mobile.html происходит для мобильных браузеров, но на странице site.com/mobile.html есть ссылка на полную версию http://site.com/?nomobile=1
При клике по ней происходит почему-то редирект на http://site.com/mobile.html?nomobile=1

Не знаю как сделать, чтобы на мобильных браузерах открывалась страница http://site.com/?nomobile=1 ?
walerus
BonyЯ чет не совсем понял... пользователь входит через МОБИЛЬНИК на site.com, его htaccess редиректит на мобильную версию "http://site.com/mobile.html", на этой странице есть ссылка на полную версию "http://site.com/?nomobile=1", по идее она же и "http://site.com/" должна быть, но не суть.

Теперь, ты спрашиваешь
Цитата
Не знаю как сделать, чтобы на мобильных браузерах открывалась страница http://site.com/?nomobile=1 ?
А зачем?, ты же в htaccess указываешь правило, что ВСЕМ мобильникам идти на "mobile.html" и тут же хочешь что бы при нажатии на полную версию, показывало полную версию, не смотря на то что он с мобильника?, так сказать принудительно...? Я правильно понял?...

Вот тут расписано чего куда, тебе тогда лучше использовать PHP редирект, потому как у тебя свое правило, "при нажатии на ссылку, открыть полную версию", т.е. нужно вначале проверить на какой урл, пользователь пришел, а уж потом определять, мобильник/НЕ мобильник.
killer8080
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Android|iPhone|iPad|iPod|IEMobile) [NC]
RewriteCond %{QUERY_STRING} !nomobile=1
RewriteRule ^$ http://site.com/mobile.html [R=301,L]
Bony
killer8080, спасибо большое за правку кода, теперь работает как надо!
В карму + пока не дают поставить, у меня недостаточно сообщений на форуме.

Интересно было бы увидеть еще решение также через PHP редирект. Исходный PHP код корректный, если его размещать не в index.php в шаблоне сайта, а в созданном модуле в cms, выводимом только на главной, проверил.
Единственное, не хватает условия с nomobile=1, без него работа кода аналогична работе кода в htaccess, без строчки
RewriteCond %{QUERY_STRING} !nomobile=1

А вообще для сео позиций сайта есть разница делать через 301 редирект в .htaccess или через PHP код?
killer8080
Цитата (Bony @ 24.07.2017 - 22:22)
если его размещать не в index.php в шаблоне сайта,

редиректу не место в шаблоне!
Зачем это делать на уровне php, когда уже решено на уровне веб сервера? Зачем лишние траты ресурсов?
Bony
Решение от killer8080 уже используется. Еще раз благодарю!
На php спросил из любознательности, так сказать, для развития)

По поводу отношения Яндекс и Гугл к редиректам мобильных браузеров, кто-нибудь в курсе? На сколько это может повлиять на сео позиции главной страницы полной версии?
По логике повлияет отрицательно, т.к. трафик на полную версию уменьшится или я не прав? И по поводу реализации решения php или htaccess для сео есть разница?
killer8080
Цитата (Bony @ 25.07.2017 - 00:44)
По поводу отношения Яндекс и Гугл к редиректам мобильных браузеров, кто-нибудь в курсе?

поисковики скорее всего об этом редиректе не узнают, если только их боты не прикидываются мобильными девайсами. Но в любом случае это же не клоакинг, бана не должно быть. Но насчет SEO спорить не буду.



Спустя 2 минуты, 41 секунда killer8080 написал(а):
Цитата (Bony @ 24.07.2017 - 22:22)
А вообще для сео позиций сайта есть разница делать через 301 редирект в .htaccess или через PHP код?

откуда поисковику знать, на каком уровне был сформирован заголовок Location, в любом случае это для него не имеет ни какого значения.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.