2011-09-22 31 views
2

我有一個移動網站和一個桌面網站。如果他們訪問桌面版網站,我爲移動用戶設置了自動重定向。但不幸的是,如果他們願意,我也需要他們訪問整個網站。移動cookie htaccess

我在.htaccess文件中設置了一個cookie,如何檢查cookie是否已設置,以便他們可以訪問整個站點?還沒有找到明確的答案。

代碼:

#redirect 
RewriteCond %{HTTP_HOST} !^m\.stage.sunjournal\.com$ 
RewriteCond %{HTTP_USER_AGENT} "android|iPhone|blackberry|ipad|iemobile|operamobile|palmos|webos|googlebot-mobile" [NC] 
RewriteRule ^(.*)$ http://m.stage.sunjournal.com/$1 [L,R=302,CO=mobile:yes:m.stage.sunjournal.com:0:/] 

回答

0

添加這種重寫條件爲您的規則:

RewriteCond %{HTTP_COOKIE} mobile=yes 

這將允許規則來執行,如果用yes名稱mobile和值的cookie存在(以更準確地說,該模式將匹配結束mobile(例如notmobile)和開始的值的任何cookie名稱yes(例如yesSir))。

如果您需要更精確(僅限完全匹配) - 您必須檢查原始餅乾的外觀,並相應地調整圖案。但只要你有獨特的cookie名稱和價值,這將不是必需的。

+0

所以cookie已設置,但嘗試訪問完整網站的邏輯是什麼?它是否符合{REQUEST_URI}條件? 'RewriteCond%{HTTP_COOKIE} mobile = yes RewriteCond%{REQUEST_URI}!^ stage.sunjournal.com [NC] RewriteRule ^(。*)$ http://stage.sunjournal.com/$1 [L,R = 302 ]' – BDUB

+0

所以..他們在移動網站上,但想要去正常的網站,對不對?他們點擊設置cookie並重定向的特殊鏈接。我認爲你必須改變邏輯:** 1)**在這種情況下,Cookie應該像'mobile = no',** 2)** Cookie應該由腳本設置,而不是由上述規則設置(移除cookie設置從那個規則)和** 3)**條件到你的規則應該是'RewriteCond%{HTTP_COOKIE}!mobile = no'(如果還沒有設置cookie,這也會起作用)。不幸的是,我現在沒有任何移動設備來測試它,因此不能保證立刻100%成功。 – LazyOne

+0

是的,有一個鏈接「查看完整網站」在手機上。我使用php設置cookie以讀取移動網站上的mobile = no。我的.htaccess文件如下:'RewriteCond%{HTTP_HOST}!^ m \ .stage.sunjournal \ .com $ RewriteCond%{HTTP_COOKIE}!mobile = no RewriteCond%{HTTP_USER_AGENT}「android | iPhone | blackberry | ipad | [移動| operamobile | palmos | webos | googlebot-mobile] [NC] RewriteRule ^(。*)$ http://m.stage.sunjournal.com/$1 [L,R = 302] '不做任何新的。從電話我仍然無法訪問整個網站,因爲它指引我回來。你有完整的htaccess條目,你可以告訴我嗎? – BDUB

0

Mark - 在您提供的參考鏈接中,cookie設置爲在用戶退出會話後自行銷燬。這是因爲cookie的生命週期從未被指定過。有關詳細信息,請轉至official documentation for mod_write

BDUB,我建議你查看Mark提供的鏈接。我遇到了設置新cookie的問題,因爲如果Cookie設置爲mobile = 0,我的cookie mobile = 1未設置。我在我的RewriteLogs中看到過這個。