You use this:
header('Location', 'index.html');
This is not a header method: the second parameter must be a boolean.
ANd first must be the name of the header +.
So, in your case, something like this:
header('Location: index.html');
Only one parameter; and name + ':' + value :-)
The documentation has an example:
The second special case is the Heading "Location:". Not only does this send this header back to the browser, but it also returns a REDIRECT (302) status code for the browser, if only some 3xx status code is already set.
<?php header("Location: http://www.example.com/"); exit; ?>
As a side element, if I remember correctly, you should use the full absolute URL when using the Location header; I know that using a relative URL works (almost?) In all browsers, but this is not true when reading HTTP RFC, if I remember correctly.
As the second one sits (yes, the answer has already been accepted, but perhaps it will be useful in any case, next time :-)): that the "Internal server error" may indicate that your PHP script error.
In this case, you should check the error_log file ...
... Or activate error_reporting and display_errors to make things easier - at least on your development machine.