nginx - 如何为每个位置块手动设置静态 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 文件。但是当我尝试访问mypage和mypage2时,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 将请求 URI 附加到
root
指令指定的路径
即当/mypage
被请求时,nginx 会尝试查找/usr/src/seo/mypage/mypage
.
为了解决这个问题,位置块mypage
和mypage2
应该看起来像
location ~ /(mypage|mypage2) {
root /usr/src/seo;
}
但是,这需要请求以斜杠结尾才能/
使index
指令起作用。因此,包括以下内容可能是个好主意try_files
:
location ~ /(mypage|mypage2) {
root /usr/src/seo;
try_files $uri $uri/ =404;
}
推荐阅读
- git - 错误:未能将一些参考资料推送到“https://github.com/”
- python - 定义一个具有列格式范围的 3d numpy 数组
- firebase - 如何使用选择器为 Xamarin Forms 上的用户分配角色?
- php - Laravel - 格式化日期以将其存储在 MySQL 数据库中
- javascript - 使用 chart.js 创建散点图的问题
- python - 使用 use_json=True 的 Python pyshark 无法打印 JSON
- laravel - 在 Laravel 中触发中间件后返回路由
- jquery - 使用“this”获取 div 中的子元素 - Jquery
- javascript - 将属性从 html 传递到 javascript 不起作用
- python - Python Camelot - 导出文件而不附加附加到文件名的附加字符串