对于理解这一点的人来说,这可能非常明显,但我已经为此绞尽脑汁几个小时,使用以下配置:
root /var/www/web/public/;
location ~ ^[^.]+?$ {
default_type text/html;
alias /var/www/web/public/index.html;
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
index index.html;
try_files $uri $uri/ =404;
}
我最终看到(重点是我)
2016/01/26 18:56:59 [警报] 32364#32364:*1 “/var/www/web/public/index.htmlindex.html“不是目录,客户端:81.82.199.24,服务器:[...].com,请求:“GET / HTTP/2.0”,主机:“[...]”
在我的服务器根目录下。我的目标是让不带.
's 的请求转到index.html
,其余的请求只需静态处理即可。
为了更加清楚地说明我的意图:
www.example.com/some/page
不包含.
,因此是页面,应该以index.html
(working)结尾www.example.com/some.file
包含一个.
,因此是一个文件,应该提供相应的文件(工作)www.example.com
不包含.
,因此是一个页面,最终应该位于index.html
(不工作,尝试加载 index.htmlindex.html)
答案1
代替
alias /var/www/web/public/index.html;
和
alias /var/www/web/public/;
并确保你的主配置中有这个(或类似的)内容,这样 Nginx 就知道在用户请求目录时显示 index.html
index index.php index.htm index.html;