You can use .htaccess if mod_rewrite is setup on the server. If you don’t know, just try and see if this works.
You may already know how to use mod_rewrite, but I’ll write as if you don’t just in case.
Create a text file in the same folder as index.html and name it ".htaccess" (no quotes, obviously; make sure you don’t put .txt on the end). The paste this code into the file and save.
RewriteEngine On
RewriteBase /
RewriteRule ^(index.html)?$ index.php [R=301,L]
This will redirect any calls to either the root of the site (since this automatically calls index.html anyway) or to index.html itself to index.php, and any query strings are appended by default.
Would it not be easier to just delete index.html, though? Or does your server not automatically choose index.php as the default even if index.html doesn’t exist? I’m using Hostmonster for hosting, and their server (Linux, though) is set to first look for index.html, and if that doesn’t exist, it looks for index.php. Yours may be set up the same, so I’d try renaming index.html to something like old.html just to see if your server finds index.php by itself. Otherwise definitely try the method above with a .htaccess file.
Hope this helps!
Edit: I was thinking more about this, and using a .htaccess file might be overkill. First make sure the server won’t find index.php on its own like I described, and then try this. Simply put the following meta tag in the <head> section of index.html.
<meta http-equiv="REFRESH" content="0;url=index.php">
The only disadvantage to this method seems to be that the query string is not saved, so if somebody goes to www.yoursite.com/?page=0 (random example), they will get to index.php, but the query string will be lost.