V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
binbinyouliiii
V2EX  ›  前端开发

请教前端单页应用使用 History 模式怎么在后端配置

  •  
  •   binbinyouliiii · 2019-09-26 10:09:29 +08:00 · 2799 次点击
    这是一个创建于 1646 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如我项目的主页是:www.xxx.com/dashboard/
    Nginx 配置项:

    location /dashboard {
        root /opt/app/;
        try_files $uri $uri/ /dashboard/index.html;
        index index.html index.htm;
    }
    

    在 History 模式下,首页是没有问题,但是如果多两级 path 就不行了。
    比如:www.xxx.com/dashboard/welcome/index
    浏览器会请求: /dashboard/welcome/ 路径下的 js/css 等资源,造成无法正常访问。

    请问有什么解决办法吗?

    第 1 条附言  ·  2019-09-26 10:43:40 +08:00
    暂时找个了不太优雅的方法:
    在 build 好的 index 里面,更换 base 标签为<base href="/dashboard/">。
    这样虽然能够解决,但是不太灵活,请教大家有什么好的办法吗?
    3 条回复    2019-09-27 13:52:54 +08:00
    woshixiaoqianbi
        1
    woshixiaoqianbi  
       2019-09-26 17:20:09 +08:00
    location ^~ /dashboard/ {
    root /opt/app/;
    try_files $uri $uri/ /dashbord/index.html;
    }
    binbinyouliiii
        2
    binbinyouliiii  
    OP
       2019-09-26 17:39:23 +08:00
    @woshixiaoqianbi #1 这样还是不能解决,build 出来的 index.html 默认是 base href 是"./" , 碰到 www.xxx.com/dashboard/welcome/index,比如 css 文件浏览器会自动拼接为 www.xxx.com/dashboard/welcome/styles.8f0e241f5389666a35df.css ,正常的是 www.xxx.com/dashboard/styles.8f0e241f5389666a35df.css 才对
    woshixiaoqianbi
        3
    woshixiaoqianbi  
       2019-09-27 13:52:54 +08:00
    root 指定了资源根目录,www.xxx.com/dashboard/styles.8f0e241f5389666a35df.css 这样访问的话应该走的 /opt/app/,是不是你的配置里还有别的匹配规则
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4464 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:03 · PVG 18:03 · LAX 03:03 · JFK 06:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.