2013-11-01 90 views
0

我想爲我的網站設置一個維護頁面。CodeIgniter重定向503

爲此,我檢查數據庫中的第一個腳本(MY_Controller)中的字段。如果它正在維護,我想將用戶重定向到維護頁面。這個作品:

redirect("maintenance", 'location'); 

這是我的問題。我想將標題代碼設置爲503,以避免機器人將維護頁面編入索引而不是真正的索引代碼。但每當我這樣做:

redirect("maintenance", 'location', 503); 

維護頁面沒有加載,該URL不會改變......

任何想法?

謝謝!

回答

1

我認爲你不能使用CI提供的redirect()函數來設置503 HTTP狀態。但是,您可以設置301代碼(時間重定向),這意味着搜索引擎會知道您的頁面暫時重定向,並且不會爲維護頁面編制索引。

此處瞭解詳情:http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html

+0

其實301是一個「永久移動」狀態。這意味着與我正在嘗試做的事完全相反。 302(默認)更好,但仍然... 503是用於維護的代碼,爲什麼我不能使用它? –

+1

嗯,我不確定301或302,但無論如何:我認爲無法在重定向()函數中設置503代碼。如何創建一個鉤子來檢查它是否處於維護模式?如果它處於該模式,則只需將狀態設置爲503,即可顯示維護頁面並完成腳本的執行。 http://ellislab.com/codeigniter%20/user-guide/general/hooks.html –

0

這是一個老問題,但也許有人絆倒在此。

我使用CI的redirect()函數來顯示維護頁面,並試圖使用503響應代碼,因爲這感覺是維護頁面的正確方法。

我在stackoverflow上找到了一個答案,讓我們用307代碼重定向,但它仍然返回代碼503到瀏覽器。

The trick用於設置視圖文件中維護頁面內容之後的標題。 (不理想,但嘿,它返回503代碼)

<?php 
    header('HTTP/1.1 503 Service Temporarily Unavailable'); 
    header('Status: 503 Service Temporarily Unavailable'); 
    header('Retry-After: 3600'); 
?>