Ultimate mobile .htaccess redirect

У меня есть приличное рабочее решение для перенаправления мобильных/настольных компьютеров с помощью кода .htaccess ниже, но есть еще несколько улучшений, которые могли бы сделать его окончательным, если кто-то может помочь.

Настройка каталога:

  • настольный сайт: website.com
  • мобильный сайт: m.website.com

Ссылки с поддержкой куки:

  • переходя с настольного сайта на мобильный, установите куки, чтобы оставаться на мобильном: http://m.website.com?m=1
  • переходя с мобильного сайта на настольный, установите куки, чтобы оставаться на настольном: http://www.website.com? m=0

Текущий файл .htaccess:

RewriteEngine on

# Check if this is the desktop to mobile query string
RewriteCond %{QUERY_STRING} (^|&)m=1(&|$)

# Set a cookie, and skip the next 2 rules 
RewriteRule ^ - [CO=mredir:1:%{HTTP_HOST},S=2]

# Check if this is the mobile to desktop query string
RewriteCond %{QUERY_STRING} (^|&)m=0(&|$)

# Set a cookie, and skip the next rule
RewriteRule ^ - [CO=mredir:0:%{HTTP_HOST},S]

RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]

# Check if we're not already on the mobile site
RewriteCond %{HTTP_HOST} !^m\.

# Can not read and write cookie in same request, must duplicate condition
RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$) 

# Check to make sure we haven't set the cookie before
RewriteCond %{HTTP_COOKIE} !^.*mredir=0.*$ [NC]

RewriteRule ^(.*)$ http://m.website.com/ [L,R=302]

То, что я хочу добавить:

  1. Если мы переходим на десктопную версию, либо с мобильного, либо при обычном посещении десктопа, убедитесь, что она всегда добавляет www.
  2. Для перенаправления с десктопа на мобильный, направляйте на соответствующую мобильную страницу, но если она не существует, то по умолчанию на домашнюю мобильную. (Пример: если вы посетите сайт website.com/chairs на мобильном телефоне, он попытается перенаправить вас на m.website.com/chairs, но если такой страницы не существует, он перенаправит вас на m.website.com. Я думаю, что отображение будет что-то вроде ^(.*)$ http://m.website.com/$1, но не уверен, как реализовать возврат на домашнюю страницу

Также, если кто-то заметит какие-либо ошибки или улучшения в текущем коде, буду рад услышать это!

6
задан Cœur 3 September 2017 в 12:11
поделиться