使用正则表达式将别名设置为特定文件时,Nginx 响应出现问题

使用正则表达式将别名设置为特定文件时,Nginx 响应出现问题

基本上,我正在尝试处理映射到服务器上实际 HTML 文件的良好 URL。

我有如下 URL:

/posts/nice-blog-post/

需要返回文件系统上的 HTML 文件,例如:

/path/to/site/posts/nice-blog-post.html

我目前拥有的位置指令是:

location ^~ /(.*)/$ {
    alias /path/to/site/$1.html;
}

此类工作有效,但只有以下 URL 能够成功解析:

domain.com/posts/nice-blog-post

此 URL(带有尾部斜杠)返回 404:

domain.com/posts/nice-blog-post/

所以我有两个问题:

  1. 如何正确解析带有尾部斜杠的 URL?
  2. 更重要的是,当 nginx 处理别名时,它似乎没有返回任何响应标头。然后 HTML 文件作为文件下载,而不是呈现到浏览器。

答案1

您需要更改正则表达式,以便它能够处理两种方式 - 带斜线和不带斜线。我想应该是这样的:

location ^~ /(.*)/?$ {
    alias /path/to/site/$1.html;
}

相关内容