2012-11-22 87 views
2

我正在開發一個使用Codeigniter的網站。將URL重定向到SEO友好URL時使用哪種重定向?

我想重定向一個URL到它的SEO友好版本。例如。
我有URL

A. http://www.example.com/post/[post-id]/

我希望這個網址redirct搜索引擎優化的本身友好版本

B. http://www.example.com/post/[post-id]/[post-title]

就像計算器使用,並像重定向的URL B網址。

http://stackoverflow.com/questions/[question-id]/[question-title]

我使用302重定向的笨,直到我讀的地方,如果您正在使用302重定向。
然後谷歌可能會把你當垃圾郵件發送者
,但後來當我看到Stackoverflow的URL模式,然後我認爲它有更好的B版本的URL。

所以我的問題是:
1.哪個重定向stackoverflow正在使用?
2.將[post-title]的Slug存儲在數據庫中,還是使用url_title()函數進行手動計算,會更好嗎?

+1

2)我認爲你應該在數據庫中存儲的URL,因爲問題的標題可以改變它會影響你的問題的方式。 – manix

+0

@manix謝謝你的答案..但我解壓後使用[post-id] ..不是[post-title] ...是的我同意你如果改變標題,然後在手動情況下url也得到改變.. –

回答

0

在帖子控制器中爲帖子的SEO友好URL創建一個私有函數。

private function _redirect($url) { // $url = http://www.example.com/post/[post-id]/ 
    redirect($url . $this->post_title); // becomes http://www.example.com/post/[post-id]/[post-title] 
    return; 
} 

您應該在重定向之前設置post_title成員變量。在你調用重定向()函數的地方,用你的私有函數_redirect()來代替它,你很好。

默認其302重定向。要做301重定向,只需將參數添加到redirect()函數。 e.g

// with 301 redirect 
redirect($url . $this->post_title, 'location', 301); 

注:爲了使此功能工作,必須之前任何輸出到瀏覽器,因爲它利用了服務器頭使用。

+0

這是廣泛的形式:) – manix

+0

@manix廣泛形式? –

+0

@AbdulHaseeb感謝您的回覆,但我可以再次問你一個問題...這是重定向。我的意思是,如果它是302方向,那麼它會影響它的SEO,就像我在問題中提到的那樣。 –

2

302表示臨時重定向。結果是搜索引擎仍然會將原始網址編入索引。

301意味着永久重定向。這會導致搜索引擎將索引數據傳輸到新的URL。

302s不是垃圾郵件,但如果在錯誤的情況下使用,你不會幫助自己。

在你的情況下,你將永久移動你的URL,所以301是合適的。

+0

感謝您的回答我應該使用什麼時重定向的網址... –

+0

...屏住呼吸的其餘... – Tiggerito

+0

呵呵..以及它只是我總是使用'...'來分隔這兩個句子。 。:) –