使用如下位置块:
location ~ ^/x[0-9]/$ {
alias /a/b/x$1/z/;
}
HTTP请求不断重定向到/a/b/x$1/index.html,没有z目录。但只有z目录存在才会发生这种情况!如果它不存在,则适当地转到:
/a/b/x$1/z/index.html
此时它会产生预期的404错误。
使用重写:
rewrite '^x([0-9])/$' /x$1/z/;
导致相同的行为。
我能够将索引指令设置为:
index /z/index.html
这适用于加载我的HTML页面,但由于不在目录z中,所有后续请求都会失败。我需要别名才能工作,但由于某种原因,它无法正常使用正则表达式。好像由于包含了$ 1变量,最终目录被吞没了 - 但只有当它实际存在时才会被吞噬。
根据我最终想要实现的目标:我希望能够使用URI / x#提供任意数量的站点,其中#将是任何正整数,例如1-999。在服务器上,目录结构是/x#/z/index.html(例如,/ app42 / dist)。
非常感谢任何帮助。
答案 0 :(得分:0)
我建议在地图中捕获网站ID,然后使用该变量来拥有动态根。你可以改编一下:serve-website-root-dynamically-based-on-domain-name
增加了好处:地图会在请求周期的早期进行评估,以便您以后可以避免某些正则表达式位置混淆。