0

「メンテナンスのためダウン」ページの作成方法に関するこの投稿を見つけましたが、適切に機能させるのに問題があります。

define('MAINTENANCE', 1); 
if(MAINTENANCE > 0){
    require('maintenance.php'); die(); 
}

このコードを /webroot.index.php に配置すると機能します。ただし、回答では、IP アドレス チェックを追加して、ダウンした場合でもそれを表示して、更新がスムーズに行われたことを確認できるようにすることを提案しています。

したがって、次のようになります

define('MAINTENANCE', 0); 
if(MAINTENANCE > 0 && $_SERVER['REMOTE_ADDR'] !='188.YOUR.IP.HERE'){
    require('maintenance.php'); die(); 
}

問題は、私の IP アドレスが Cake によって検出されないことです。入力echo $_SERVER['REMOTE_ADDR']しましたが、::1 と表示されます。user_id も使用してみましたが、次のエラーが発生しましClass 'AuthComponent' not found in...た。

これを /index.php と /App/index.php に入れてみましたが、メンテナンス ページはトリガーされず、ページは正常にロードされます。

4

1 に答える 1

1

私が通常行ってmod_rewriteいるのは、アプリケーション コードから独立した を使用することです。

以下に例を示します。発信元以外のすべてのアクセス試行を、ファイルと同じフォルダーにリダイレクト127.0.0.1しますmaintenance.php.htaccess

RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteRule . maintenance.php [L]

は次のmaintenance.phpようになります。

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

?><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>503 Service Temporarily Unavailable</title>
</head><body>
<h1>Service Temporarily Unavailable</h1>
<p>The server is temporarily unable to service your
request due to maintenance downtime or capacity
problems. Please try again later.</p>
</body></html>

これは外部リダイレクトを含まないことに注意してください! 検索エンジンで問題が発生したことはまだありませんが、メンテナンスにそれほど時間がかからなかったからかもしれませんが、私は SEO の専門家ではありません。

R実際のリダイレクトの使用は、 edirect フラグ(およびリダイレクト ループを回避するための不一致パターン) を使用して行うことができます。

RewriteRule !^maintenance\.php$ /maintenance.php [R=307,L]

/maintenance.phpURLがまだそこを指していない場合、これはにリダイレクトされます。

これをすべてアプリケーションにさらに結び付けないようにするために、代わりにサーバーまたは仮想ホストの構成で適切なルールを定義できます (それにアクセスできる場合)。仕方。

于 2013-10-20T12:31:36.550 に答える