Some people will insist on a RewriteCond looking at THE_REQUEST as an alternative to the NS flag. But either way should work.
#2 The code as written will create an infinite loop for everything but HTTP/1.0 requests, because it says "if the host is example.org OR www.example.org" ... and what else would it be? Do you have subdomains that you're trying to exclude, or other domains that pass through the same htaccess?
Now, you do want a domain-name canonicalization redirect. But that's a separate RewriteRule. In general, the index redirect will be your second-to-last redirect while the canonicalization redirect is the very last redirect.
#3 Using the index page as your error document is not as calamitous as explicitly redirecting 404s to the index page. But wouldn't it be more helpful to your human users if you made a custom 404 page? They already know they're on your site; tell them something they don't know.
Msg#: 4604911 posted 3:17 pm on Aug 26, 2013 (gmt 0)
A BIG thanks for your reply and help.
You were right, the RewriteRule ^(([^/]+/)*)index\.html http://www.example.org/$1 [R=301,NS,L] code fixed the loop problem.
2. This entire website www.example.org has been recently moved to a sub-domain go.example.org. Also there are additional sub-domains where blogs have been installed like uv1.example.org; uv2.example.org and so on.
There are no additional domains that pass through the same htaccess. We just wanted that all requests for www.example.org/index.html or example.org/index.html should be redirected to just example.org
After the website has moved to the sub-domain, there is nothing on example.org except a splash page that redirects users to the new location. So I don't think a canonical redirect on the root domain would matter now, right?
3. The index.html is actually acting as a custom 404 page since it is the splash page that directs users to the new location at go.domain.org