user88975
user88975

Reputation: 1648

Temporary redirect to maintenance page

I am trying to write a rule to redirect all URLs to a temporary page so that some site updation could be done, but it ends up in an infinite loop.

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

How to check if it's a temp page?

Upvotes: 10

Views: 18067

Answers (3)

Manu
Manu

Reputation: 31

It works, I tried it. It will redirect all requests to a maintenance page.

    <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>

Upvotes: 2

Chris Aelbrecht
Chris Aelbrecht

Reputation: 2091

What I do is to redirect all traffic to a maintenance.html page when it's not coming from my IP.

The first rewrite condition avoids an infinite loop.

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

Upvotes: 2

Nimit Dudani
Nimit Dudani

Reputation: 4860

You need to write rule for all request except maintenance file.

.htaccess should be:

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

Upvotes: 15

Related Questions