我有 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]
最佳答案
我会更改移动网站上的链接,使其不指向普通网站的真实起始页。相反,创建一个名为 e.g. 的页面。 “命名目录”。当该页面被访问时,它应该设置您将要检查的 cookie,然后它应该将用户重定向到起始页面。这样您就可以在正确的域中设置 cookie,并且只为那些明确请求它的用户设置。
关于apache - htaccess 使用 cookie 重定向多个域以记住所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6511113/