У меня есть 2 сайта для клиента. Один — мобильный сайт, другой — обычный сайт. Они оба имеют отдельные URL-адреса.
Используя .htaccess, я уже заработал так, что если вы заходите с мобильного телефона, вы будете перенаправлены на мобильный сайт. Что я хотел бы сделать сейчас, так это иметь ссылку на мобильный сайт, которая вернет пользователя на обычный сайт. Этот параметр будет запомнен установленным файлом cookie.
И тут возникает проблема...
Я могу установить файл cookie для мобильного сайта, но когда он затем перенаправляется на обычный сайт, он не видит этот файл cookie из-за междоменного доступа и перенаправляет обратно на мобильный сайт.
Я пытаюсь быть умным и делаю размещение файла cookie динамическим в зависимости от домена, а при перенаправлении на обычный сайт также устанавливаю файл cookie, чтобы он не пытался перенаправить.
Вот код mod_rewrite, над которым я работаю. У меня сейчас болит голова из-за этого, поэтому, если бы кто-нибудь мог указать, где я ошибся, или если это вообще возможно, это было бы здорово.
# Write cookie if redirected
RewriteCond %{QUERY_STRING} (^|&)mredir=0(&|$)
RewriteRule ^ - [CO=mredir:0:%{HTTP_HOST}]
# redirect if mobile device && !mredir
RewriteCond %{HTTP_HOST} ^normalURL.com$
RewriteCond %{HTTP_COOKIE} !mredir=0
RewriteCond %{QUERY_STRING} !(^|&)mredir=0(&|$)
RewriteCond %{REQUEST_URI} !^/mobile/
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
RewriteRule ^(.*)$ http://mobileURL.com/ [R=302,QSA,L]
# point at mobile site IF !mredir
RewriteCond %{HTTP_HOST} ^mobileURL.com$
RewriteCond %{HTTP_COOKIE} !mredir=0
RewriteCond %{QUERY_STRING} !(^|&)mredir=0(&|$)
RewriteCond %{REQUEST_URI} !^/mobile/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_URI} ^/
RewriteRule ^(.*)$ mobile/$1 [L,QSA]
# IF mredir, redirect normal site
RewriteCond %{HTTP_HOST} ^mobileURL.com$
RewriteCond %{HTTP_COOKIE} mredir=0 [OR]
RewriteCond %{QUERY_STRING} (^|&)mredir=0(&|$)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_URI} ^/
RewriteRule ^(.*)$ http://normalURL.com?mredir=0 [L,QSA]
# point at normal site
RewriteCond %{HTTP_HOST} ^normalURL.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
mobile.mysite.com
иwww.mysite.com
? - person Seybsen   schedule 04.03.2012