2015-04-24 199 views
-1

我想爲我的網站實施維護維護功能,但似乎遇到了一些麻煩。讓我解釋。PHP實施維護維護頁面

我的網站結構看起來是這樣的:

websitename 
    model 
    view 
    controller 
    public 
      css 
      .htaccess 
      index.php 
    .htaccess 
    index.php 
    maintenance.php 

我使用這個htaccess的代碼,將用戶重定向到維護頁面。 .htaccess文件代碼位於公用文件夾內。

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    #handle the redirect to maintenance 
    RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111 
    RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC] 
    RewriteRule .* /maintenance.php [R=302,L] 


    # handle home page 
    RewriteRule ^/?$ home [L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    # Rewrite all other URLs to index.php/URL 
    # RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

雖然這似乎沒有工作。我已經找了很多教程,但似乎沒有任何工作。另外,我想知道,如果用戶被重定向到維護頁面,當維護結束後,他們將如何重定向到正常的網站。

在此先感謝

+0

「不工作」意味着什麼?您向我們展示的是.htaccess文件?你的webroot文件夾是哪個文件夾? – deceze

+0

什麼不工作?在mainenance結束後重新定向某人的一種簡單快速的方法是讓一些JS不時地檢查某個文件。 – FabioCosta

+0

你如何測試它?你將不得不評論第一個條件來測試它。 –

回答

1

如果是我,我會創建一個config目錄與配置值。其中之一是

$config['maintenance'] = false; 
$config['maintenance_url'] = '/maintenance/'; 

,當你要進入維護模式,你只需要更新配置文件維護價值

$config['maintenance'] = true; 

,並在前端控制器或索引文件有一個檢查

if($config['maintenance']) 
{ 
    header('Location: ' . $config['maintenance_url']); 
    // in the event page cannot redirect 
    die('Under maintenance, please come back later'); 
} 
+0

我決定用php代替htaccess,因爲它更容易。謝謝你的幫助。所有評論都很好,但我只能選擇一個。謝謝大家。 – Beardslapper

0

忽略.htaccess文件,並通過在根目錄下創建一個空文件maintenance.flag直接將代碼插入index.php

if(file_exists('maintenance.flag')){ 
    // code to render maintenance page 
    exit; 
} 

您可以啓用/禁用維護模式。

0

我來到這裏是因爲php標籤。 ¿你有沒有考慮只通過php

我會做的是有一個配置文件(或數據庫)和if句話放在我的PHP代碼,類似:

if($config['maintenance']==true) { 
    include_once "maintenance.php"; 
} else { 
    // the rest of your index.php 
} 
0
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f 
RewriteRule ^(.*)$ maintenance.html [R=302,L] 

更改文件名到任何你想要的,你可以通過renamin把網站上落g與該名稱之間的文件,例如maintenance.html將網站離線,maintenance.html.bak將其重新聯機。