You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS下Nginx部署静态HTML页面跳转404问题求助

解决静态HTML相对路径跳转404的问题

咱们一步步拆解这个问题,很多人配置静态站点时都会碰到类似的情况!你的核心矛盾在于Nginx只会在root指定的目录下查找文件,跳转失败要么是文件路径逻辑错了,要么是Nginx没被引导去正确的位置找文件。分两种场景来解决:

场景1:跳转的文件就在当前root目录下

你的Nginxroot指向/home/apps/html/one,如果differentFolder/index.html实际存放在/home/apps/html/one/differentFolder/里,那问题大概率出在这两点:

  • 相对路径写错了:检查HTML里的跳转链接,比如当前页面是domain.tk/index.html,跳转链接应该写./differentFolder/index.html或者直接differentFolder/index.html;别写成/differentFolder/index.html(带开头斜杠的是绝对路径,虽然指向网站根目录,但如果是从子页面跳转,路径层级容易混乱)。
  • 文件权限不匹配:Nginx进程(通常用nginx用户)没有读取这个文件的权限。运行下面的命令修复权限:
    chown -R nginx:nginx /home/apps/html/one
    chmod -R 755 /home/apps/html/one
    
    之后重启Nginx生效:systemctl restart nginx

场景2:跳转的文件不在当前root目录下

如果differentFolder实际在/home/apps/html/(和one同级),那Nginx默认只会去/home/apps/html/one里找,自然返回404。这时候不用给每个HTML文件都单独注册路由,只要给整个文件夹配置一个location就行,有两种常用方式:

方式1:用root配置映射

修改你的Nginx server块:

server {
    listen 80;
    server_name domain.tk www.domain.tk;
    root /home/apps/html/one;
    location / {
        index index.html;
    }
    # 把/differentFolder路径映射到上级目录的对应文件夹
    location /differentFolder/ {
        root /home/apps/html;  # 这里指向differentFolder所在的父目录
        index index.html;
    }
}

方式2:用alias配置(更精准)

alias会直接把location的路径替换成指定目录,适合这种跨文件夹的场景:

server {
    listen 80;
    server_name domain.tk www.domain.tk;
    root /home/apps/html/one;
    location / {
        index index.html;
    }
    location /differentFolder/ {
        alias /home/apps/html/differentFolder/;  # 直接指向目标文件夹
        index index.html;
    }
}

配置完成后重启Nginx,再测试跳转就正常了。

总结

  • 如果文件在当前root目录下:检查路径和权限,无需修改Nginx配置
  • 如果文件在其他目录:给目标文件夹配置一个location即可,不用每条路由都单独注册
  • 也可以调整HTML里的跳转路径,确保相对路径指向正确的文件位置

内容的提问来源于stack exchange,提问作者StackSmack007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 07:33:16