Make nginx serve index.html if requested url is not found without using error_page

Mir Nazim asked:

I have nginx configured to serve a single page React.js app as static content. react-router handles routing in browser.

To make it possible for users to enter all urls (not just the domain example.com, but also urls like example.com/some/path, example.com/some/other/path, etc.) directly in the address bar, I am doing,

error_page 404 /index.html

This works perfectly fine everywhere except in Internet Explorer. IE shows 404 page for this.

How do I configure nginx, such that it serves index.html, if the request path cannot be matched to a file in the root directory.

Thanks.

My answer:


This is a job for try_files.

try_files $uri /index.html;

$uri will load any static resources if they are present and accessible; for any inaccessible URLs, /index.html will be served (with a 200).


View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.