2

I'm having a bad .htaccess day!

I want a user to be able to type the URL

mysite.com/about

instead of

mysite.com/about.html

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.

mysite.com/pages/contact

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

What am I doing wrong?

3
  • Not a direct solution, but moving the file to about/index.html gives you the same result.
    – johannes
    Commented Mar 30, 2012 at 12:42
  • 1
    There should be NO leading slash when matching in RewriteRule if placed in .htaccess. Try this: RewriteRule ^(.*)$ /$1.html [NC,L]
    – LazyOne
    Commented Mar 30, 2012 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
    Commented Mar 30, 2012 at 12:53

1 Answer 1

4

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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