11

How do I write a rewrite-rule that redirects visitors to the domain www.mydomain.com/ to www.mydomain.com/index.html?

Robin Rodricks
  • 110,798
  • 141
  • 398
  • 607

4 Answers4

22

So you want to redirect nothing (^$) to index.html? That would then look like

RewriteRule ^$ index.html [L]

If you want to avoid both the / and /index.html being indexed by search bots, then add R=301 to make it a permanent redirect rather than a temporary redirect (302, which is the default). This would let the bots only index the /index.html.

RewriteRule ^$ index.html [R=301,L]
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
4

What BalusC said - but consider whether you really want to redirect them. Wouldn't it be better to just serve index.html when the browser requests /, like most servers do? It's an extra round-trip to the server for no gain and just makes the URL longer. It's so 1990s. :)

EMP
  • 59,148
  • 53
  • 164
  • 220
  • 2
    Seeing the context of the question (apache already does that by default) I rather think he just want to get rid of it :) – BalusC Dec 16 '09 at 00:22
  • I wanted it for this reason: http://serverfault.com/questions/94706/how-to-password-protect-the-domain-with-htaccess – Robin Rodricks Dec 16 '09 at 13:28
0

One way is to put your index.html in another folder, for exemple: domain.com/welcome/index.html and do a R301 from your CPanel. It's a wordaround but it worked for me. Have the same issue.

Dejan Mur
  • 11
  • 2
0

Is it possible there's a mistake above? It didn't work for me, redirecting me to a very long filepath ending in /index.html The code that worked for me is:

# These two lines redirect the root to index.html.
RewriteRule ^$ /index.html [R=301,L]
RewriteRule ^/$ /index.html [R=301,L]

I found this solution at .htaccess redirect root to index.php

Islam Tawfik
  • 17
  • 1
  • 6