nginx 返回固定页面(单页应用)

最近使用单页应用,返回index.html 遇到了问题:

需求是这样的:有一个请求:/oper/,不管是/oper/A,/oper/B,/oper/A/B等等,我都想只返回同一个index.html

目前使用try_files能实现,但是他会强制改变请求路径(重定向);

我希望它能保证原始的请求路径不变,如:请求/oper/B之后不会重定向但是还是返回index.html.

谢谢!

补充:我的nginx版本为: 1.12.2
clipboard.png

阅读 19.1k
2 个回答

try_files是可以的,不会响应30x跳转

location /oper/ {
    try_files $uri /index.html;
}

也可以用rewrite

location /oper/ {
    rewrite /oper/ /index.html last;
}

对比下两者的优缺点:
try_files可以兼顾文件存在的情况,不过会多一些磁盘操作
rewrite无磁盘操作,不过无法兼顾文件存在的情况

如果是单纯的需要将/oper/开头的所有请求返回/index.html,建议使用rewrite

location / {
            rewrite /oper/ /index.html break;
            root   html;
            index  index.html index.htm;
        }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题