Webmasters Stack Exchange is a question and answer site for pro webmasters. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm having a bad .htaccess day!

I want a user to be able to type the URL


instead of


On .htaccess file I have:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^/(.*)$ /$1.html [NC,L]

But this simply does not work?

I will add though that if i try this further inside the site e.g.


Works perfectly whether I have the above code in the .htaccess or not

What am I doing wrong?

share|improve this question

migrated from stackoverflow.com Mar 31 '12 at 23:35

This question came from our site for professional and enthusiast programmers.

Not a direct solution, but moving the file to about/index.html gives you the same result. – johannes Mar 30 '12 at 12:42
There should be NO leading slash when matching in RewriteRule if placed in .htaccess. Try this: RewriteRule ^(.*)$ /$1.html [NC,L] – LazyOne Mar 30 '12 at 12:50
Also, instead of using mod_rewrite, you can look at Options directive, MultiViews in particular: httpd.apache.org/docs/current/mod/core.html#options – LazyOne Mar 30 '12 at 12:53
up vote 4 down vote accepted

just avoid slashes before both matching patterns and destination. So,

RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [NC,L]

should work perfectly.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.