htaccess перенаправляет на несколько доменов, используя куки, чтобы запомнить все - PullRequest
3 голосов
/ 28 июня 2011

У меня есть 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]

1 Ответ

0 голосов
/ 07 мая 2012

Я бы изменил ссылку на мобильном сайте, чтобы она не указывала на реальную стартовую страницу обычного сайта.Вместо этого создайте страницу с именем, например, "nomredir".При доступе к этой странице он должен установить cookie, который вы будете проверять, а затем он должен перенаправить пользователя на стартовую страницу.Таким образом, вы получите набор файлов cookie в соответствующем домене и только для тех пользователей, которые его специально запрашивают.

...