2009-11-15 54 views
0

我有一個站點當前正在域中。我想將其切換到新的站點,該站點目前位於此服務器上的受密碼保護的子目錄中。Apache:將新站點部署到服務器

我有一個「網站維護中」頁面。我想設置Apache,以便默認顯示,而不是「index.php」。另外,我希望在開關時保護服務器上的所有其他設備(雖然這不是必需的,但我猜)。

public_html已將此添加到.htaccess文件:

DirectoryIndex siteDown.php 

不幸的是,這並沒有做任何事情。我可以導航到http://www.example.com/siteDown.php就好。

我在共享主機設置。這可能是一個問題嗎?

回答

1

共享主機通常具有某種控制面板,允許您打開.htaccess處理。

你應該使用mod_rewrite的規則,因爲這最終成爲

http://www.example.com/

http://www.example.com/this_other_page.html目錄索引將只處理條目仍將工藝精細,即使你可能已修改的DirectoryIndex。

另外,你真的應該成爲一個503錯誤,爬行機器人,高速緩存和其他實體可以嘗試緩存該頁面爲「是」您的網站。

+0

如何爲一個503錯誤? – 2009-11-15 18:08:13

+0

http://php.net/manual/en/function.header.php(見最後一頁) – Daniel 2009-11-22 20:31:01

0

某些共享主機不允許.htaccess。檢查您的主機的TOS,看看它們是否被允許,或者在您的.htaccess中放入一些「垃圾」(如「asdasdasd」)。如果您的頁面加載正常,那麼服務器不會讀取它們。如果出現內部服務器錯誤(500),它將被激活。

如果您沒有啓用.htaccess,您可以使用php進行重定向。在index.php的第一行:

header("Location: http://domain.com/siteDown.php"); 
exit(); 

這不是最好的解決方案,但它的工作原理如下。如果您的網站結構始終基於index.php querystrings(如index.php?page=home),它可以在所有頁面上運行。

0

你爲什麼不添加東西到你的index.php頁面像頭:

if($site_down == TRUE) 
{ 
    print "My site is down"; 
} 

然後存儲您在您的情況,最好的地方變量,如數據庫或平面文件。如果你把這個標誌放到你的數據庫中,你甚至可以設置例如定期維護和有用的消息來顯示。這將適用於任何使用MySQL和PHP的託管賬戶,並且在需要關閉時非常有用。您不必移動任何文件。

以下是非常粗糙的僞代碼,所以不要複製粘貼,但是這將顯示您的想法:

$sql = "SELECT * FROM site_maintenance WHERE down_start >= NOW() AND down_end <= NOW() ORDER BY down_start ASC, down_end ASC LIMIT 1;"; 
// GET YOUR RESULT SET 
if(COUNT($result) == 1) 
{ 
    print "Site Down: {$row->reason}"; 
    exit; 
}