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,然后使用该变量获得动态根。你可能会调整这个:
额外的好处:地图在请求周期的早期进行评估,以后会避免一些正则表达式位置混淆。
位置块如下:
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,然后使用该变量获得动态根。你可能会调整这个:
额外的好处:地图在请求周期的早期进行评估,以后会避免一些正则表达式位置混淆。