2017-01-02 10 views
0

phpと.htaccessファイルでサイト保守モードを有効/無効にしようとしています。phpと.htaccessでサイト保守モードを設定する

PHPで.htaccessファイル内の# BEGIN/END MAINTENANCE MODEの間の行のコメント/コメントを解除する方法を探したいと思います。

# BEGIN MAINTENANCE MODE 
# <IfModule mod_rewrite.c> 
# RewriteEngine on 
# RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111 
# RewriteCond %{REQUEST_URI} !maintenance.html$ [NC] 
# RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] 
# RewriteRule .* maintenance.html [R=302,L] 
# </IfModule> 
# END MAINTENANCE MODE 

+6

PHPに.htaccessファイルを変更させることは、セキュリティ上の大きなリスクのようです。 –

+2

このルールセットを有効または無効にするのではなく、ファイル「maintenance.html」を作成または削除(名前を変更)してモードを切り替えます。 – arkascha

+0

PHPの名前を変更すると便利です:http://php.net/manual/en/function.rename.php – Hokusai

答えて

1

他のコメントに記載されているとおり、 PHPがhtaccessファイルへの書き込みアクセス権を持っていないようにします。セキュリティ上のリスクになる可能性があります。場所を正確に、物事のPHP側では、その後、あなたを

Options +FollowSymLinks 

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111 
    RewriteCond %{REQUEST_URI} !maintenance.html$ [NC] 
    RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] 

    # Check if the maintenance.html file exists, 
    # if so, redirect all requests to that file. 
    RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f 
    RewriteRule .* /maintenance.html [R=503,L] 
</IfModule> 

@arkascha mentionedとして、1つのアプローチは、それに基づいて、メンテナンスモードをmaintenance.htmlファイルが存在するかどうかをチェックし、有効/無効にすることができそのコメント/非コメントのロジックを作成したければ、maintenance.htmlファイルの名前を変更するだけです。このようなもの:

<?php 
# Assuming you're in the document root... 

# Disables maintenance mode 
rename('maintenance.html', 'maintenance.html.bak'); 

# Enables maintenance mode 
rename('maintenance.html.bak', 'maintenance.html'); 

もうひとつメモ;メンテナンスのために503コードを使用してください:
What is the correct HTTP status code to send when a site is down for maintenance?

関連する問題