2012-02-19 58 views
0

我已經搜索了Google一段時間,一直未能找到解決方案。htaccess根據cookie值重定向

我需要將我的網站的用戶重定向到歡迎頁面,前提是他們之前沒有訪問過該網站。

我要存儲一個hasVisited cookie並重定向,如果這是false並將其設置在歡迎頁面上。

我可以在PHP和jQuery中使用它,但是當它檢查cookie是否設置時,它會首先加載默認頁面內容,然後重定向。不看起來太過了。

我以後是什麼: 一個 - 將使用的htaccess先停止默認頁面加載重定向之前 b - 如何做好讚賞上述

任何幫助。

回答

2

你需要做的餅乾用PHP檢查,然後調用頭(「地點:http://your-url.com/」)將其重定向

if (!isset($_COOKIE['hasVisited']) { 
    header("Location: http://example.com/welcome.php"); 
} 

被警告這會影響搜索引擎 - 谷歌將只能夠檢查每個php文件的歡迎頁面。您可以添加此項以允許谷歌通過檢查

if (!isset($_COOKIE['hasVisited'] && !strpos($_SERVER[‘HTTP_USER_AGENT’],"Googlebot")) 
+0

好的。所以繼續使用PHP。 Cool – puks1978 2012-02-19 03:31:42

+0

op應該在打印任何內容之前執行此操作。否則會返回警告並顯示不可取的內容 – jribeiro 2012-02-19 03:32:38

+0

是的,正如jribeiro提到的那樣,這需要在頂部 - 因爲我們正在發送標題 – Ayub 2012-02-19 03:41:54

2

您不需要使用PHP。您可以簡單地使用重寫規則。您如何維護之前的上下文取決於您使用的是SEO優化編碼還是傳統參數編碼。所以

RewriteEngine On 
RewriteBase /

RewriteCond %{HTTP_COOKIE}  !\bhasVisited=  [NC] 
RewriteRule (?:!welcome\.php\b)(?=\.php\b)(.*) welcome.php?page=$1 [QSA,L]  

規則的第一位是防止它發射兩次。第二個限制爲php腳本(你不希望welcome.php使用的CSS也被重定向)。您還需要存儲最初的URI以防止訪問者想要繼續他或她的初始請求。

這種方法比替代PHP檢查更簡單 - 當然這需要添加到每個腳本中。