V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
binbinyouliiii

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

  •  
  •   binbinyouliiii · Sep 26, 2019 · 3509 views
    This topic created in 2408 days ago, the information mentioned may be changed or developed.

    比如我项目的主页是: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 等资源,造成无法正常访问。

    请问有什么解决办法吗?

    Supplement 1  ·  Sep 26, 2019
    暂时找个了不太优雅的方法:
    在 build 好的 index 里面,更换 base 标签为<base href="/dashboard/">。
    这样虽然能够解决,但是不太灵活,请教大家有什么好的办法吗?
    3 replies    2019-09-27 13:52:54 +08:00
    woshixiaoqianbi
        1
    woshixiaoqianbi  
       Sep 26, 2019
    location ^~ /dashboard/ {
    root /opt/app/;
    try_files $uri $uri/ /dashbord/index.html;
    }
    binbinyouliiii
        2
    binbinyouliiii  
    OP
       Sep 26, 2019
    @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  
       Sep 27, 2019
    root 指定了资源根目录,www.xxx.com/dashboard/styles.8f0e241f5389666a35df.css 这样访问的话应该走的 /opt/app/,是不是你的配置里还有别的匹配规则
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2419 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 01:09 · PVG 09:09 · LAX 18:09 · JFK 21:09
    ♥ Do have faith in what you're doing.