2010-10-20 39 views
3

我正在使用會話在我的網站上的不同頁面之間維護一些變量。雖然當我從www.example.com/a移動到www.example.com/b時,它工作正常,但如果我從example.com/a移動到www.example.com/b,會​​話變量會丟失。mysite.com和www.example.com之間沒有維護會話

任何想法如何我可以確保會議保持不考慮www或沒有www?

該網站追加一個萬維網,因爲它導航到不同的頁面,但頁面也可以訪問沒有。因此,如果有人手動輸入地址並忽略該部分,然後導航到頁面b(通過單擊鏈接或提交表單),會話變量將丟失。

回答

5

合理的方法是將example.com重定向到www.example.com;通過這種方式確保您的所有訪問者都在www.example.com,並且抓取工具不會爲具有相同內容的兩個頁面編制索引。

你做到這一點通過發送301: Moved Permanently用戶訪問example.com(假設你使用Apache,你必須把它添加到您的.htaccess):

Redirect 301 http://example.com/ http://www.example.com/ 

第二個版本:

Redirect 301 http://example.com/(.*) http://www.example.com/$1 

對不起,這個是對的:

Options +FollowSymlinks 
RewriteEngine on 

rewritecond %{http_host} ^example.com [nc] 
rewriterule ^(.*)$ http://www.example.com/$1 [r=301,nc] 

這裏採取http://www.webconfs.com/how-to-redirect-a-webpage.php

+0

+1 - 這是更乾淨的方式來做到這一點,假設www.mysite.com是相同的網站在邏輯上mysite.com – tobyodavies 2010-10-20 06:06:35

+0

謝謝。我會去這個。只有一個問題 - 如果我傳遞一個帶有URL的參數(沒有www),重定向會自動將參數傳遞給www URL嗎? – lostInTransit 2010-10-20 06:52:08

+0

不確定,但第二個版本應該。 – 2010-10-20 06:53:34

2

你需要確保該cookie被設置使用session_set_cookie_params不www.example.com改爲.example.com的,具體參數3 - 會話ID存儲在cookie中documentation

+2

如果他希望會話值在兩個域下都可用,將域設置爲「.example.com」會更有意義。 – mellowsoon 2010-10-20 07:03:56

+0

是的,這就是我的意思!編輯,謝謝 – tobyodavies 2010-10-20 22:44:43