2011-10-14 5 views
8

一部のサイトの更新を行うことができるようにすべてのURLを一時的なページにリダイレクトするルールを作成しようとしていますが、無限ループに終わります。メンテナンスページへの一時的なリダイレクト

RewriteCond %{HTTP_HOST} ^(.*)mysite\.com$ 
    RewriteCond %{REQUEST_URI} !^(.*)temp$ 
    RewriteRule ^(.*)$ http://www.mysite.com/temp [R=307,L] 

一時ページかどうかを確認するにはどうすればよいですか?

答えて

10

メンテナンスファイル以外のすべての要求に対してルールを記述する必要があります。

.htaccessファイルは次のようになります。

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

私は何をすべきか、それは私のIPから来ていないときmaintenance.htmlページへのすべてのトラフィックをリダイレクトすることです。

最初の書き換え条件は、無限ループを回避します。

RewriteCond %{REQUEST_URI} !/maintenance.html$ 
RewriteCond %{REMOTE_ADDR} !^172\.16\.254\.1$ 
RewriteRule $ /maintenance.html [R=302,L] 
1

うまくいきました。すべての要求を保守ページにリダイレクトします。

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000 
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] 
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] 
RewriteRule .* /maintenance.html [R=302,L] 
</IfModule> 
関連する問題