12

60 ページを超える Web サイト (PHP) を構築しました。管理者が Web サイトを一時的に無効にしてメンテナンス モード ページを表示できるように、「メンテナンス モード」機能を組み込む必要があることに (残念ながら) 気付いたのです。これにより、管理者としてログインしたユーザーのみが Web サイトを表示できるようになります。

私が見るオプションは次のとおりです。

  1. すべての単一の PHP ページの先頭に新しい「インクルード」ファイルを追加します。


  2. すべてのページ (ナビゲーション クラス)にナビゲーション バーを表示するために使用されるインクルードが 1 つあります。このクラスでメンテナンス モードの
    コードを記述できます。

他に選択肢はありますか?1 番目のオプションは最も効率的ではないように思われ、2 番目のオプションは単に悪いプログラミングのように見えます。すべての単一のphpファイルに新しいファイルを含める他のより良い方法はありますか?

ありがとう!

ps - サイトはまだ公開されていません

4

6 に答える 6

20

.htaccessメンテナンス モード中に別のページにリダイレクトするために使用できます。

3 つのさまざまな例:

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]

.htaccess の「メンテナンスのためダウン」ページのリダイレクト

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$ 
RewriteCond %{REMOTE_HOST} !^888\.888\.888\.888

RewriteRule $ /maintenance.html [R=302,L] 

.htaccess を使用してアップグレード中にメンテナンス ページにリダイレクトする

# redirect all visitors to alternate site but retain full access for you
ErrorDocument 403 http://www.alternate-site.com
Order deny,allow
Deny from all
Allow from 99.88.77.66

Apache のメンテナンス モード

于 2009-09-08T23:26:43.253 に答える
8

これは古い質問であることは承知していますが、検索でこのページに出くわした将来の検索者のためにこれを追加します。

PHPリダイレクトを使用しています。

各ページの上部に次の行を追加します。

<?php
include('PATH/TO/FILE/config.php');
if(maintenance == 1) {
header('Location: http://example.com/maintenance.php');
}
else {
// do nothing
}
?>

そして、config.phpファイルで変数を次のように作成するだけです

$maintenance = 0; // turns maintenance mode off

サイトをメンテナンス モードにする場合は、「0」を「1」に変更します。これにより、すべてのサイト訪問者がメンテナンス ページにリダイレクトされます。

テストせずにそのコードをかなり速く入力しましたが、動作するはずです。

于 2013-06-10T20:03:45.093 に答える
3

auto_prepend_file文字列

メインファイルの前に自動的に解析されるファイルの名前を指定します。ファイルはrequire()関数で呼び出されたかのようにインクルードされるため、include_pathが使用されます。

特別な値noneは、自動付加を無効にします。

これは、php.ini、apache(仮想)ホストファイル、またはphp_flagauto_prepend_filefile.phpを使用した.htaccessで設定できます。

[またはphp_admin_flag(?)]

編集

  • たぶん、あなたはあなたのウェブルートディレクトリまたはサブフォルダにインクルードファイルを置くべきではありません。
  • そして最後にexitまたはdieを呼び出すことを忘れないでください。
于 2009-09-08T23:35:58.803 に答える
0

最も簡単な方法は、サイト生成に関するロジックの一部を一元化することです。このようにして、メンテナンスモードをオンにして、管理者以外のユーザーを別のページにリダイレクトできます。これを行うのは難しいことではありません。あちこちにポップアップし続けるコードがあると思います。ログイン機能を拡張して、グローバル変数をチェックしてください(ページ全体に共通のグローバル変数がない場合)。 setenvを介して.htaccessに設定するだけです)。

于 2009-09-08T23:35:11.987 に答える
0

標準の Apache 式は、ルールを書き換えるよりも理解しやすいと思います。

メンテナンスの前に、ファイルの名前を/home/coolcmd/site_maintenance_off/home/coolcmd/site_maintenance_onに変更します。

/.htaccess のコード スニペット:

# If file, directory or symlink /home/coolcmd/site_maintenance_on exists,
# and requested file is not /maintenance.html,
# and not an admin's IP...
<If "-e '/home/coolcmd/site_maintenance_on' && %{REQUEST_URI} != '/maintenance.html' && %{REMOTE_ADDR} != '111.111.111.111'">
# Generate status code 503 for URL beginning with /, in other words for ANY URL.
# This is not "the real redirection 3xx".
Redirect 503 "/"
# This page handles status code 503. All external resources used by page
# (for example, maintenance.css), if any, must be added to <if> above.
ErrorDocument 503 /maintenance.html
# Maintenance probably will end in 10 minutes.
Header set Retry-After 600
</If>
于 2015-04-25T15:24:19.620 に答える