Try wrapping your directives in <IfModule>
containers. That way, if a module isn't loaded, it won't cause a 500 server error.
For exmaple, starting from:
RewriteEngine on
all the way to:
RewriteRule ^.* - [F,L]
Wrap that entire block of directives inbetween a:
<IfModule mod_rewrite.c>
# all your rewrite stuff goes in here
</IfModule>
And the same with any Header
line, like:
Header set X-UA-Compatible "IE=Edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*
<FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|xpi|safariextz|vcf)$" >
Header unset X-UA-Compatible
</FilesMatch>
Can be wrapped:
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=Edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*
<FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|xpi|safariextz|vcf)$" >
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
and all of your expires stuff, starting from:
ExpiresActive on
to
ExpiresByType text/javascript "access plus 1 year"
can be wrapped in:
<IfModule mod_expires.c>
# all your expires stuff goes here
</IfModule>
Then if you stop getting the 500 server error, make sure mod_expires, mod_headers and most importantly mod_rewrite is loaded. Though it would seem by default mod_rewrite is loaded on hostgator.