一个目录中文件的两个位置的nginx规则

nginx rule for two locations for files in one directory

我有以下目录:

]# ls /srv/web/logs/
yellow-log  blue-log  log.css

我想要两个链接:

为此,nginx 规则应该是什么样的?我试过:

location ~* ^/(?:yellow|blue)-log(?:/|.html)?$ {
    alias /srv/web/logs;
}

但是抱怨缺少索引。我只是希望在为它们发出请求时为这些页面中的每一个提供服务,并且它们应该位于同一目录中。两者使用相同的 log.css 文件。

你已经成功了一半。问题是你使用 alias 时你的意思是 root 而你没有 CSS 文件的路径。假设 CSS 文件是相对于 HTML 文件的,它的 URI 实际上是 example.com/log.css。日志文件没有扩展名,因此需要 default_type.

一个解决方案是:

location ~* ^/(?:yellow|blue)-log$ {
  default_type text/html;
  root /srv/web/logs;
}
location = log.css { root /srv/web/logs; }