我已将 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+ 字节