使用正则expression式对一个特定的文件进行别名时,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成功parsing:

 domain.com/posts/nice-blog-post 

这个URL(带有斜线)返回一个404:

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

所以我有两个问题:

  1. 如何获得正确parsing尾部斜线的URL?
  2. 更重要的是,当nginx处理别名时,它不会返回任何响应头。 然后将HTML文件作为文件下载,而不是呈现给浏览器。

你需要改变你的正则expression式,所以它会处理两种方式 – 有和没有斜杠。 应该是这样的,我想:

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