Alias/Rewrite 正则表达式失败

Alias/Rewrite failing with regular expression

位置块如下:

location ~ ^/x[0-9]/$ {
    alias /a/b/x/z/;
}

HTTP 请求不断重定向到 /a/b/x$1/index.html,没有 z 目录。但这只有在 z 目录存在的情况下才会发生!如果它不存在,它会正确地转到:

/a/b/x/z/index.html

此时它会按预期产生 404 错误。

使用重写:

rewrite '^x([0-9])/$' /x/z/;  

结果相同。

我可以这样设置索引指令:

index /z/index.html

这适用于加载我的 HTML 页面,但所有后续请求都因不在目录 z 中而失败。我需要别名才能工作,但由于某种原因,它无法与正则表达式一起正常工作。就好像由于包含 $1 变量,最终目录被吞噬了——但前提是它确实存在。

根据我最终想要实现的目标:我希望能够为任意数量的站点提供服务,所有站点都带有 URI /x#,其中 # 可以是 1-999 中的任何正整数。在服务器上,目录结构为 /x#/z/index.html(例如,/app42/dist).

如有任何帮助,我们将不胜感激。

我建议在地图中捕获站点 ID,然后使用该变量获得动态根。你可能会调整这个:

额外的好处:地图在请求周期的早期进行评估,以后会避免一些正则表达式位置混淆。