RewriteCond in .htaccess file gives me bad flag delimiters

.htaccessrewriterewritecond

I'm upgrading a website and I use this .htaccess file to show maintenance page:

#MAINTENANCE-PAGE REDIRECT
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 # Bogus IP address for posting here
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 # Bogus IP address for posting here
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://www.mysite.no/maintenance.html [R=307,L]

This opens the maintenance page for all users except the two IP addresses I've added.
They get an Internal Server Error. I've used thesame script on another site, and that worked fine.

Looking at the error log, I see the following:

/var/www/vhosts/mysite.no/httpdocs/.htaccess: RewriteCond: bad flag delimiters 

If I remove my .htaccess file, I can work with my site just fine.

My site is hosted on a VPN using CentOS 5.

How can I fix this problem?

Best Answer

I believe you have to use the [OR] flag to chain rules like this:

#MAINTENANCE-PAGE REDIRECT
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 [OR]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 [OR]
RewriteCond %{REQUEST_URI} !^/maintenance\.html$ 
RewriteRule ^(.*)$ http://www.mysite.no/maintenance.html [R=307,L]

In the apache docs, it's at the bottom of this section as an example: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

Also, you can use the RewriteLog and RewriteLogLevel 3 directives to possibly gain some more insight.

Related Topic