Aligatro
@Aligatro
Turn food and coffee into software...

Как сделать правильный редирект при переходе с ПС?

Добрый день. Столкнулся с проблемой невозможности организовать перенаправление мобильных пользователей на pda версию своего сайта в случае если они переходят из поисковых систем. На данный момент на сайте имеется такой код (быдло код, я знаю.):

if( !isset($_SESSION['version']) && wp_is_mobile()) {
  if ( $_SERVER['REQUEST_URI']=='/') {
  wp_redirect( '/?version=mobile' );
  exit;
} else {
   wp_redirect( $_SERVER[REQUEST_URI] . '/?version=mobile' ); 
   exit;
}
}


который в случае если сессия пуста и пользователь использует телефон, автоматом (при первом заходе) отправляет на моб версию сайта. Но возникает проблема, при переходе на сайт из поисковых систем, пользователь отправляется не на сам материал а на главную страницу сайта. Как я понимаю, причина такого странного поведение в отсутствие передаваемого ПСом REQUEST_URI на который опирается мой переключатель. Теперь внимание вопрос, как заставить этот код дружить с ПС (проверять $HTTP_REFERER )?
  • Вопрос задан
  • 2689 просмотров
Решения вопроса 2
lexxpavlov
@lexxpavlov
Программист, преподаватель
REQUEST_URI передаётся всегда, его не может не быть.
Проблема может быть в том, что вы не поставили кавычки $_SERVER[REQUEST_URI], и выражение в скобках воспринимается как константа, и выскакивает ошибка уровня NOTICE.
Попробуйте такой код:
if( !isset($_SESSION['version']) && wp_is_mobile()) {
   wp_redirect( $_SERVER['REQUEST_URI'] . '?version=mobile' ); 
   exit;
}
Ответ написан
Комментировать
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Во первых это можно сделать проще как мне кажется.
Во вторых сделайте print_r ($_SERVER), request_uri не может быть пустой никогда.

if( !isset($_SESSION['version']) && wp_is_mobile()) {
	$_SESSION['version'] = 'mobile';
	wp_redirect( $_SERVER['REQUEST_URI']  );
	exit;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы