使用捕获的命名组定义别名时的奇怪行为
strange behaviour when using captured naming group to define alias
我有一个非常简单的虚拟主机配置:
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/ 时,我在错误日志中有此 return:
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"
最后一个字母被删除...有人知道为什么吗?
虽然不明确,但 the example in the manual 显示了在 alias
语句中构造的整个 URI,当包含在正则表达式位置中时。
因此,尽管这不能直接回答您的问题,但可行的替代配置可能是:
location ~ ^/datavis/(\w+)(.*)$ {
alias /var/www/data--front;
autoindex on;
}
显然命名的捕获也可以。
您的别名不以 /
结尾,但 autoindex
想要它并从路径中删除最后一个字符。 index index.html
也不起作用,因为结果路径将是 /var/www/data-test-frontindex.html
。所以,你只需要添加 /
:
location ~ ^\/datavis\/(?<datarep>[\w]+)/ {
alias /var/www/data-${datarep}-front/;
autoindex on;
}
我有一个非常简单的虚拟主机配置:
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/ 时,我在错误日志中有此 return:
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"
最后一个字母被删除...有人知道为什么吗?
虽然不明确,但 the example in the manual 显示了在 alias
语句中构造的整个 URI,当包含在正则表达式位置中时。
因此,尽管这不能直接回答您的问题,但可行的替代配置可能是:
location ~ ^/datavis/(\w+)(.*)$ {
alias /var/www/data--front;
autoindex on;
}
显然命名的捕获也可以。
您的别名不以 /
结尾,但 autoindex
想要它并从路径中删除最后一个字符。 index index.html
也不起作用,因为结果路径将是 /var/www/data-test-frontindex.html
。所以,你只需要添加 /
:
location ~ ^\/datavis\/(?<datarep>[\w]+)/ {
alias /var/www/data-${datarep}-front/;
autoindex on;
}