首页 > 解决方案 > 如何为每个位置块手动设置静态 html 文件

问题描述

我正在尝试使用 nginx。我正在尝试为我的配置文件中声明的每个位置提供一个特定的 index.html 文件,例如

location / {
    root /usr/src/seo/homepage;
}

location ~ /mypage {
    root /usr/src/seo/mypage;
}

location ~ /mypage2 {
    root /usr/src/seo/mypage2;
}

指定的每个文件夹位置都有自己的 index.html 文件。但是当我尝试访问mypagemypage2时,nginx 返回 404。我希望它能够呈现它各自的 index.html

更新!!! 使用别名解决它,例如:

location / {
    alias /usr/src/seo/homepage;
}

location ~ /mypage {
    alias /usr/src/seo/mypage;
}

location ~ /mypage2 {
    alias /usr/src/seo/mypage2;
}

标签: nginx

解决方案


文档

为了获取请求文件的路径,NGINX 将请求 URI 附加到root指令指定的路径

即当/mypage被请求时,nginx 会尝试查找/usr/src/seo/mypage/mypage.

为了解决这个问题,位置块mypagemypage2应该看起来像

location ~ /(mypage|mypage2) {
    root /usr/src/seo;
}

但是,这需要请求以斜杠结尾才能/使index指令起作用。因此,包括以下内容可能是个好主意try_files

location ~ /(mypage|mypage2) {
    root /usr/src/seo;
    try_files $uri $uri/ =404;
}

推荐阅读