3

我有 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]
4

1 回答 1

0

我会将移动网站上的链接更改为不指向正常网站的实际起始页。相反,创建一个名为“nomredir”的页面。当访问该页面时,它应该设置您将要检查的 cookie,然后它应该将用户重定向到起始页面。这样,您就可以将 cookie 设置在正确的域中,并且仅适用于那些专门请求它的用户。

于 2012-05-07T12:46:45.780 回答