Перенаправление мобильного пользователя на настольную версию

У меня есть веб-сайт Wordpress, который использует обнаружение устройства для перенаправления пользователей, просматривающих на своем мобильном устройстве, на определенную страницу, используя следующее:

<script>
if( /Android|webOS|iPhone|iPod|BlackBerry|IEMobile/i.test(navigator.userAgent) ) {
window.location = "176.32.230.17/domain.co.uk/m";
}
</script>

Этот код в настоящее время находится в шаблоне домашней страницы для domain.co.uk. Сразу после открывающего тега body. Однако обнаружение и перенаправление работают хорошо, мне нужно предоставить обратную ссылку на настольную версию веб-сайта на этой мобильной странице. Итак, простая ссылка:

<a href="http://176.32.230.17/domain.co.uk/?ref=desktop">Link back to desktop website</a>

Это работает тем, что перенаправляет пользователя обратно на адрес domain.co.uk, однако, поскольку размещение кода обнаружения / перенаправления находится в шаблоне домашней страницы на domain.co.uk, пользователь перенаправляется обратно в мобильную версию. Как я могу это исправить?


person egr103    schedule 04.03.2013    source источник


Ответы (1)


Вам нужно будет каким-то образом передать тот факт, что пользователь уже был перенаправлен один раз. Если вы используете PHP, у вас может быть условное перенаправление с помощью переменной GET. Если вы просто используете Javascript, возможно, используйте файл cookie. HTML5 также поддерживает какое-то хранилище данных, но я с этим не знаком.

РЕДАКТИРОВАТЬ: На самом деле, вы можете просто привязать переменную GET к адресу и даже не использовать PHP. Просто получите адрес, используя window.location.href, и посмотрите, установлена ​​ли переменная только с использованием Javascript.

РЕДАКТИРОВАТЬ2: Слишком много комментариев было добавлено, поэтому позвольте мне поставить это здесь. Ссылку нужно изменить на:

<a href="http://176.32.230.17/domain.co.uk/?ref=desktop#redirected">Link back to desktop website</a>

А код перенаправления можно изменить на:

<script>
if( /Android|webOS|iPhone|iPod|BlackBerry|IEMobile/i.test(navigator.userAgent) &&
        !window.location.href.contains("#redirected") ) {
    window.location = "176.32.230.17/domain.co.uk/m";
}
</script>
person GJK    schedule 04.03.2013
comment
Как мне использовать метод JS или метод PHP? Я не совсем уверен, как это сделать ... Какой вариант лучше всего реализовать? - person egr103; 04.03.2013
comment
Ну, сначала скажите нам, используете ли вы PHP или нет? - person GJK; 04.03.2013
comment
Я использую Wordpress, поэтому могу использовать PHP. Я открыт для любого метода, если честно - person egr103; 04.03.2013
comment
Я бы сделал что-то вроде этого: перенаправил пользователя на сайт /? Ref = desktop & already_redirected = true. Затем в Javascript найдите переменную window.location.href и выполните поиск по ней. Если в нем уже_redirected = true, не перенаправляйте второй раз. - person GJK; 04.03.2013
comment
Вы говорите: «Получите переменную window.location.href и выполните поиск», как мне это сделать? - person egr103; 04.03.2013
comment
window.lcation.href - это просто строка. Вы можете взглянуть на строковые функции Javascript, если не знаете, как их искать. Метод contains будет лучшим выбором. developer.mozilla.org/en-US/ docs / JavaScript / Reference / - person GJK; 04.03.2013
comment
Спасибо за код, но, к сожалению, перенаправление сейчас не работает. Утверждает ли оператор if, что если какое-либо из этих устройств И не содержит хэштега '#redirected', перенаправить на мобильную страницу? - person egr103; 04.03.2013
comment
Дополнительное предложение if не должно ни на что повлиять, если вы не добавите тег. Вероятно, у вас возникла ошибка сценария. Используйте консоль отладки, чтобы узнать. - person GJK; 04.03.2013
comment
Ага, плохо. Спасибо за вашу помощь. - person egr103; 04.03.2013