如果未使用 error_page 而未找到请求的 URL,则让 nginx 提供 index.html

如果未使用 error_page 而未找到请求的 URL,则让 nginx 提供 index.html

我已将 nginx 配置为将单页 React.js 应用程序作为静态内容提供。react-router 处理浏览器中的路由。

为了让用户能够直接在地址栏中输入所有 URL(不仅仅是域名example.com,还包括example.com/some/path、等 URL),我这样做,example.com/some/other/path

error_page 404 /index.html

除了 Internet Explorer 之外,其他任何地方都可以正常使用。IE 会显示 404 页面。

如果请求路径无法与根目录中的文件匹配,我该如何配置 nginx 以使其提供 index.html 服务。

谢谢。

答案1

这是 的工作try_files

try_files $uri /index.html;

$uri如果静态资源存在且可访问,则会加载它们;对于任何无法访问的 URL,/index.html将会提供服务(使用 200)。

答案2

作为解决方法,您可以使用

server {
    listen       80;
    server_name  www.example.net;

    root /vhosts/default/public_html;

    error_page 404 =200 /index.html;

    location / {
        index index.html;
    }
}

IE 有可能显示缓存版本吗?

这似乎是 IE 的默认行为。至少对于 Windows 7 上的 IE11 来说是这样

PS 事实证明你的 index.html 必须是 512+ 字节

相关内容