nginx 位置重定向到名称与请求域相同的文件夹

nginx 位置重定向到名称与请求域相同的文件夹

我是 nginx 新手,我想这样做:

If the URL contains "/assets" redirect to "/communities/$url_domain"

换句话说:

Requested: "http://www.cats.com/assets/superfile.png"
Redirected:"http://www.cats.com/communities/cats.com/superfile.png"

这是非常简单的事情,但它不起作用。

我做了什么

location /assets {
    root /communities/$host;
}

但每当我尝试从 /assets 访问文件时,我都会得到一个

404 Not Found

nginx/1.8.1

我做错了什么?
谢谢!

编辑:

我激活了日志并看到了以下内容:

2016/02/10 17:27:16 [error] 31#0: *1 open() "/communities/www.cats.com/assets/superfile.png" failed (2: No such file or directory), client: 192.168.1.254, server: _, request: "GET /assets/superfile.png HTTP/1.1", host: "www.cats.com"

我会进一步调查是否能提取 URL 的域名部分

编辑2
目录结构

/
--/communities/
--------------/cats.com/
---------------------superfile.png
--------------/dogs.com/
---------------------superfile.png

例如:

  1. 用户将请求此 URL www.cats.com/assets/superfile.png

  2. 用户将看到相同的 URL。

  3. Nginx 内部会寻找: www.cats.com/communities/cats.com/superfile.png

答案1

您需要使用alias

location /assets/ {
    alias /communities/$host/;
}

相关内容