перенаправление мобильного сайта на десктопную версию с использованием .htaccess

#.htaccess #mobile #desktop #redirect

#.htaccess #Мобильный #Для рабочего стола #перенаправление

Вопрос:

У меня есть мобильный сайт, и он только что запустил сервис и для пользователей настольных компьютеров. Как мне использовать .htaccess для перенаправления пользователей, использующих рабочий стол, на настольную версию сайта?

Я пробовал простые PHP-скрипты для перенаправления на домашнюю страницу настольной версии, но мне бы хотелось, чтобы перенаправление было немного более эффективным. Например, я хотел бы перенаправить http://site.com/subfolder / to http://site.com/desktop/subfolder / и я подумал, что с помощью .htaccess можно было бы выполнить эту работу.

Я пробовал следующее, и, похоже, это не работает.

 RewriteCond %{REQUEST_URI} !^/desktop/.*$
RewriteCond %{HTTP_USER_AGENT} "!android|!blackberry|!ipad|!iphone|!ipod|!iemobile|!webos|!googlebot-mobile" [NC]
RewriteRule ^(.*)$ /desktop/ [L,R=302]
  

Пожалуйста, помогите!

Ответ №1:

Попробуйте эти правила в вашем файле .htaccess:

 RewriteEngine on
Options  FollowSymlinks -MultiViews
RewriteCond %{REQUEST_URI} !^/desktop/ [NC]
RewriteCond %{HTTP_USER_AGENT} ^.*(MSIE.*Windows NT|Lynx|Safari|Opera|Firefox|Konqueror) [NC]
RewriteCond %{HTTP_USER_AGENT} !(^.*(Opera Mini|SymbianOS|Mobile)) [NC]
RewriteRule ^(.*)$ /desktop/$1 [L,R=302,NC]
  

Обновление (в сочетании с правилами WordPress)

 # BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
Options  FollowSymlinks -MultiViews

RewriteCond %{THE_REQUEST} !^GETs/wp-login.php [NC]
RewriteCond %{REQUEST_URI} !^/(desktop/|wp-admin/|wp-login.php) [NC]
RewriteCond %{HTTP_USER_AGENT} ^.*(MSIE.*Windows NT|Lynx|Safari|Opera|Firefox|Konqueror) [NC]
RewriteCond %{HTTP_USER_AGENT} !(^.*(Opera Mini|SymbianOS|Mobile)) [NC]
RewriteRule ^(.*)$ /desktop/$1 [L,R=302,NC]

RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(desktop/|wp-admin/|wp-login.php) [NC]
RewriteRule . /index.php [L]

</IfModule>
# END WordPress
  

R = 302 перенаправит со статусом https 302

Я введу последнее правило

NE означает отсутствие экранирующей строки запроса

1 доллар — это ваш REQUEST_URI

Комментарии:

1. Когда я захожу на сайт, он перенаправляется на домашнюю страницу настольной версии. Кроме того, когда я зашел на сайт на своем ipod, он тоже был перенаправлен…

2. @Adrian Wan: Ну, я думал, что ваш HTTP_USER_AGENT уже проверен, поэтому я просто использовал его как есть из вашего вопроса. В любом случае, я только что отредактировал свой ответ выше, пожалуйста, попробуйте еще раз.

3. Привет, Анубхава, спасибо за твой ответ, теперь он выдает мне внутреннюю ошибку сервера 500… однако я должен сказать вам одну вещь: я использую WordPress для этого сайта.

4. Извините, у меня была небольшая опечатка в приведенном выше коде, просто отредактировал еще раз и протестировал, он отлично работает в моем браузере и iPhone. Однако я не смог протестировать на большем количестве мобильных устройств. Пожалуйста, попробуйте и дайте мне знать. Также для WordPress воспользуйтесь этим очень приятным плагином: bravenewcode.com/store/plugins/wptouch-pro (Я использовал его и нашел его действительно потрясающим)

5. Привет, Анубхава, по какой-то причине он все еще перенаправляет на mysite.com/desktop но не mysite.com/desktop/subdirectory ….

Ответ №2:

Я думаю, что приведенный ниже код нацелен на большую точность в настольных браузерах. Вы можете удалить 1-ю строку USER_AGENT, если не хотите исключать IE 10 на устройствах с сенсорным управлением.

 RewriteCond %{REQUEST_URI} !^/desktop/.*$
RewriteCond %{HTTP_USER_AGENT} !Windows NT. Touch [NC]
RewriteCond %{HTTP_USER_AGENT} Windows NT 6|Macintosh|Ubuntu|Linux (x86_64|i686)|CrOS [NC]
RewriteRule ^(.*)$ /desktop/ [L,R]
  

Все настольные браузеры, использующие Windows, Mac, Linux, будут перенаправлены на /desktop /.

Ответ №3:

Вы хотели перенаправить на www-версию своего сайта? Затем измените

 RewriteCond %{REQUEST_URI} !^/(desktop/|wp-admin/|wp-login.php) [NC]
  

к следующему: (замените www.example.com с вашего десктопного сайта).

 RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=302] 
  

с уважением

seemore