Amazon S3 is a great static site host. It supports custom domains, HTTPS, and has a CDN (Amazon CloudFront). It’s not free, but it’s so cheap that it’s effectively free; you’ll probably pay pennies per month. The one downside is that configuring and deploying to S3 is a nightmare.
I built Discharge as a companion to Charge to simplify and automate configuring and deploying to S3. It synchronizes files, sets up HTTPS, and sets up the CDN.
S3 supports clean URLs but not implicitly. You have to transform your filenames and remove the extensions as you deploy to S3. Discharge will automatically do that for you if you configure it to.
Netlify is a great place to host a static site for free. It supports custom domains, HTTPS, and has a CDN built in.
Netlify supports clean URLs (which they call “Pretty URLs”) and have docs on how to enable them.
Vercel is another great place to host a static site for free. It supports custom domains, HTTPS, and has a CDN built in.
You can definitely deploy a static site to Heroku but I wouldn’t recommend it. The free dynos will sleep after 30 minutes and stop working entirely if you run out of your monthly “dyno hours” allotment.