apache - htaccess 使用 cookie 重定向多个域以记住所有内容

标签 apache mod-rewrite cookies multiple-domains

我有 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/

相关文章:

spring - 这很可能会在 Tomcat 中造成内存泄漏吗?

java - 如何在 Android 上升级 Apache HttpClient 版本

Django/Apache/mod_wsgi - WEB 应用程序挂起 - 无法启动

.htaccess - SEO 友好的 URL 不起作用

.htaccess - 强制所有请求使用 https ://and prepend www

javascript/jQuery 在 cookie 中存储对象并检索

java - 无法从浏览器读取 Cookie

php - TYPO3 站点的缩放

regex - .htaccess RewriteRule 使用查询字符串重写条件,但不将查询字符串添加到最终网址

javascript - Node.js Express 应用程序 : if cookie is present, 从服务器端向元素添加 CSS 类