2009-10-13 53 views
1

我目前正在開發一個內部CMS,並且已經陷入停頓。我試圖很容易地在博客文章的頁面之間進行分頁,而不能決定如何處理。真正的問題只出現在我需要允許用戶選擇每頁顯示多少結果或排列帖子的順序時。PHP分頁和排序

我最初的想法是簡單地使用查詢字符串:blog/?page=3&count=20&sort=date但我不確定這種方法是否會對SEO產生不利影響。

例如,谷歌是否理智地認識到blog/?page=3&count=20blog/?count=20&page=3相同?

然後我想到了使用會話,但是這又不能解決上述問題,並且可能會使情況變得更糟,因爲有些用戶可能沒有啓用Cookie。

最後,我已經使用mod_rewrite的一些網址,最好是使用這樣的結構:blog/1/20/

我真的可以做一些幫助/建議在這裏,似乎並沒有一個硬性和快速分頁結果的方式。

在此先感謝

回答

2

只要這些查詢字符串是出現在網站上的鏈接(通過靜態的,正常的「尋呼」,這是spiderable鏈接)不應該有任何不良影響。但是,如果您的分頁通過會話進行,可能會產生影響,因爲這通常是通過Cookie或長查詢字符串傳播的會話ID完成的。據我所知,參數順序並不重要,只要它們從服務器獲得相同的輸出即可。

簡單的GET查詢字符串分頁方法很好地工作。谷歌也這樣做(例如:q = test & start = 10 & ...),關鍵是要確保所有東西都可以通過純樸的錨點到達。

0

如果您計劃您的網站滿意地爬行,請避免使用querystrings。

相反,使用mod_rewrite和查詢這樣的:

blog/page:3/count:20/sort:date 

這將使其更具可讀性,同時保持查詢字符串的方式進行。

當然,在進行實際查詢之前,您必須解析它,但這在PHP中很簡單:使用explode()分隔URI的每個部分,然後從那裏解析。

考慮沒有固定參數的順序,而是允許它們被交換和省略,這將爲您在構建鏈接時提供更大的靈活性。

0

我一直這樣做,通過會話變量,通過ajax調用設置。

我爲每個列標題設置了一個onClick事件,並將該頁面的內容封裝在一個div中,以便我可以替換它。

我不希望Google下載同一頁面的10個不同版本。

+0

但是,您如何迎合禁用Cookie的用戶?或JavaScript關閉了? – Rowan 2009-10-14 06:24:55

0

關於你提到的會話變量評論:

我當時想過使用會話,但同樣這並沒有解決上述問題,並有可能使一些用戶可能沒有啓用Cookie情況變得更糟。

會話變量存儲在服務器上而不是客戶端上,所以禁用cookie不會影響會話變量。

如果你想避免谷歌重複問題,會話變量可能是解決這個問題最簡單也是最可靠的方法。

+0

我知道會話變量存儲在服務器上,但會話ID仍然需要存儲在客戶端(在cookie或查詢字符串中) – Rowan 2009-10-14 06:26:37