我是 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
例如:
用户将请求此 URL www.cats.com/assets/superfile.png
用户将看到相同的 URL。
- Nginx 内部会寻找: www.cats.com/communities/cats.com/superfile.png
答案1
您需要使用alias
:
location /assets/ {
alias /communities/$host/;
}