How to put Magento in maintenance mode with IP filters (the easy way)?

How to put Magento in maintenance mode with IP filters ©

This is probably the most useful quick tip I can think of that I use all the time. Putting Magento in maintenance mode is an essential part of every site launch and it is used in lots of other situations. Although there are many different ways to do this I found that using a few simple lines of code in the root htaccess file is, by far, the easiest solution I could think of. On top of that, this solution enables you to put all the files needed for the maintenance page (html, images, etc.) into one folder. One more advantage of this method is that if you forget to add your IP address to the filter (whitelist) you can do that at any time through FTP so you will not be locked out of your own site 😉

Before we start I recommend you backup your root htaccess file so you can easily reverse all the changes if anything goes wrong.

First you will need to create a folder called “maintenance” in the root of your Magento site. Put the maintenance page (for example static html file) and all the require resources (like images and css) into the folder you just created. Maintenance page can be anything you like as long as all the necessary files are also located in the “maintenance” folder. Be sure to use relative paths when adding resources (images, css, etc.) to your maintenance page. They should be relative to maintenance folder you just created. You can design the maintenance page anyway you like and add all the content and features you need.

Once you are happy with your maintenance page you need to add a few lines of code into the root htacess file. Add the following code below rewrite engine declaration (“RewriteEngine on”). Make sure you have the rewrite engine turned on and working before adding the code.

## 503 Maintenance mode
RewriteCond %{REQUEST_URI} !^/maintenance/
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1$
RewriteRule .* index.php [R=503,L]
ErrorDocument 503 /maintenance/maintenance.html

Add you IP address in the format specified in line four. You can add as many IP addresses as you need and they will all be able to access the site while it is in maintenance mode. All other IP addresses will be redirected to the maintenance page. Leave the as is or it won’t work correctly.

Note that we used 503 redirect which prevents search engines from removing your site from their index.

Save and upload your htaccess file and everything should work fine. Please try this on your local machine or development/staging server before moving it to your live site. I am not responsible if you break your site while trying to make this work! On the other hand if you made the backup like I told you at the beginning you should be OK 🙂 If you experience any problems just replace the htaccess file you worked on with your backup and you’ll be fine (no need to delete the maintenance folder).

That’s it. I hope it will work for you. In case you’ll need some extra help along the way, we’re here for you!

You made it all the way down here so you must have enjoyed this post! You may also like:

How To Connect Google Analytics 4 To Magento 2 Bojan Mareljic
Bojan Mareljic, | 36

How To Connect Google Analytics 4 To Magento 2

3 best open-source eCommerce platforms in 2021 Zrinka Antolovic
Zrinka Antolovic, | 8

3 best open-source eCommerce platforms in 2021

eCommerce Returns Management – a simple solution from the Fashion industry Zrinka Antolovic
Zrinka Antolovic, | 12

eCommerce Returns Management – a simple solution from the Fashion industry


  1. Hi,
    I have made the steps as you mentioned but it does not work for My Magnto Website , I am using V
    Could you please help me to solve it ?
    The website is still accessible by the others. and while I create Maintenance.flag it also disabled to me however I wrote My Ip.

    Best regards,

  2. Please disregard previous post. I just learned that I couldn’t see the .htaccess file because it is hidden in cpanel

  3. Where do I find the htaccess file? I can’t find it anywhere…using Magento 1.8…very frustrating…

  4. Hi Srdjan
    Thanks for the tip. It worked really well. Not sure why magento doesn’t have this feature available by default.


  5. Thanks for the tip, Srdjan!

    Are there any suggestion how to do the same if I’m using Nginx?

  6. I had to make the following changes to make it work for me. I paste it below just in case someone finds it helpful:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} !\.(jpe?g|png|gif) [NC]
    RewriteRule .* index.php [R=503,L]
    ErrorDocument 503 /maintenance/maintenance.html

    Thanks for your post!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <blockquote cite=""> <code> <del datetime=""> <em> <s> <strike> <strong>. You may use following syntax for source code: <pre><code>$current = "Inchoo";</code></pre>.

Tell us about your project

Drop us a line. We'd love to know more about your project.