我有一个非常简单的虚拟主机配置:
server {
listen 80 default_server;
server_name datavis.dev.localserver.fr;
root /var/www;
location ~ ^\/datavis\/(?<datarep>[\w]+) {
alias /var/www/data-${datarep}-front;
autoindex on;
}
}
我在2个目录中有2个index.html:/ var / www / data-test1-front和/ var / www / data-test2-front
当我在浏览器中尝试http://datavis.dev.localserver.fr/datavis/test1/时,我会在错误日志中返回:
2016/10/04 17:36:43 [error] 4614#4614: *1 opendir() "/var/www/data-test1-fron" failed (2: No such file or directory), client: 192.168.56.1, server: datavis.dev.localserver.fr, request: "GET /datavis/info/ HTTP/1.1", host: "datavis.dev.localserver.fr"
删除了最后一封信......有人知道为什么吗?
答案 0 :(得分:1)
虽然不明确,the example in the manual显示在alias
语句中构造的整个URI,当包含在正则表达式位置时。
所以,虽然这并没有直接回答你的问题,但是一个可行的替代配置可能是:
location ~ ^/datavis/(\w+)(.*)$ {
alias /var/www/data-$1-front$2;
autoindex on;
}
显然,命名的捕获也会起作用。
答案 1 :(得分:0)
您的别名不以/
结尾,但autoindex
需要它并从路径中删除最后一个字符。 index index.html
也不会工作,因为结果路径为/var/www/data-test-frontindex.html
。因此,您只需要添加/
:
location ~ ^\/datavis\/(?<datarep>[\w]+)/ {
alias /var/www/data-${datarep}-front/;
autoindex on;
}