【问题标题】:How to fix relative urls with nginx?如何使用 nginx 修复相对 url?
【发布时间】:2020-09-10 14:18:05
【问题描述】:

我正在学习一些关于 nginx 的知识,但我已经碰壁了。我正在尝试运行一个小型静态 html 站点,该站点具有非常简单的树结构,如下所示:

/var/www/mydomain.com/pages/category1/0.html
/var/www/mydomain.com/pages/category1/1.html
/var/www/mydomain.com/pages/category1/2.html
/var/www/mydomain.com/pages/category1/3.html
/var/www/mydomain.com/pages/category1/4.html
/var/www/mydomain.com/pages/category1/5.html
/var/www/mydomain.com/pages/category1/6.html
/var/www/mydomain.com/pages/category1/7.html
/var/www/mydomain.com/pages/category1/8.html
/var/www/mydomain.com/pages/category1/9.html
/var/www/mydomain.com/pages/category2/0.html
/var/www/mydomain.com/pages/category2/1.html
/var/www/mydomain.com/pages/category2/2.html
/var/www/mydomain.com/pages/category2/3.html
/var/www/mydomain.com/pages/category2/4.html
/var/www/mydomain.com/pages/category2/5.html
/var/www/mydomain.com/pages/category2/6.html
/var/www/mydomain.com/pages/category2/7.html
/var/www/mydomain.com/pages/category2/8.html
/var/www/mydomain.com/pages/category2/9.html
/var/www/mydomain.com/pages/category3/0.html
/var/www/mydomain.com/pages/category3/1.html
/var/www/mydomain.com/pages/category3/2.html
/var/www/mydomain.com/pages/category3/3.html
/var/www/mydomain.com/pages/category3/4.html
/var/www/mydomain.com/pages/category3/5.html
/var/www/mydomain.com/pages/category3/6.html
/var/www/mydomain.com/pages/category3/7.html
/var/www/mydomain.com/pages/category3/8.html
/var/www/mydomain.com/pages/category3/9.html

如果我通过www.mydomain.com/pages/category1/1.htmlwww.mydomain.com/pages/category2/2.html 等访问网址...一切都会正常,到目前为止一切正常(所有链接都很好)。

每个 html 页面都使用类似于此的相对 href:

href="../category1/0.html"
href="../category2/0.html"
href="../category3/0.html"
href="0.html"
href="1.html"
href="2.html"
href="3.html"
href="4.html"
href="5.html"
href="6.html"
href="7.html"
href="8.html"
href="9.html"

因此,当您的请求类似于 www.mydomain.com/pages/category1/1.html 时,一切正常是有意义的。

现在,我的问题来了,我希望网站在有人访问 www.mydomain.com 时也能正常工作,所以我想到的第一个想法是修改服务器 index 指令,如下所示:

server {

    server_name mydomain.com;
    root /var/www/mydomain.com;

    index pages/category1/0.html;

    # index.html fallback
    location / {
        try_files $uri $uri/ index.html;
    }
}

但如果我这样做,所有链接都将变得无效......我的意思是,它会向www.mydomain.com 响应有效内容,但从那里所有相关网址都将无效。

我确信这是一个非常基本的场景,所以您能否建议我如何通过修改我上面的 nginx 配置来解决这个问题?

附言。我知道这可以更容易地解决,可能使用适当的后端技术而不是平面静态 html,但我现在想保持它尽可能简单,所以如果可以通过调整 nginx 配置来解决这个问题,那就太好了。

【问题讨论】:

    标签: html nginx web url


    【解决方案1】:

    目前为了使其正常工作,您必须将配置更改为:

    server {
    
        server_name mydomain.com;
        root /var/www/mydomain.com/pages/category1; #this must be a path
    
        index 0.html;
    
        # index.html fallback
        location / {
            try_files $uri $uri/ =404;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-30
      • 2017-05-16
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 2018-08-14
      相关资源
      最近更新 更多