从 uri 模式确定变量 (Apache)

Determine variable from uri pattern (Apache)

实际上我们正在使用 Apache 网络服务器来托管我们的 REST-API。 脚本以 Lua 编写并映射为 mod-lua.

例如来自 httpd.conf 的实际片段:

[...]
LuaMapHandler /restapi/(v\d{3})/(\w+) /opt/http/htdocs/restscripts//.lua
[...]

所以请求 GET https://xxx/restapi/v001/articles 被映射到脚本 /opt/http/htdocs/restscripts/v001/articles.lua

好的,希望你能真正关注我。现在我们必须用 mod 规则扩展我们的 API,但请求 uri 必须相同。 是否有机会确定 module 名称并将其写入变量?


示例 - 脚本路径:

/opt/http/htdocs/restscripts/module1/v001/articles.lua
/opt/http/htdocs/restscripts/module2/v001/orders.lua
/opt/http/htdocs/restscripts/module2/v001/payments.lua
/opt/http/htdocs/restscripts/module3/v001/employees.lua

lua-脚本是独一无二的。

示例 - 请求:

GET https://xxx/restapi/v001/articles
GET https://xxx/restapi/v001/orders
GET https://xxx/restapi/v001/payments
GET https://xxx/restapi/v001/employees

httpd.conf应该是这样的:

[...]
$MODULE=getModule
LuaMapHandler /restapi/(v\d{3})/(\w+) /opt/http/htdocs/restscripts/$MODULE//.lua
[...]

我已经阅读了以下 question,但这些变量不依赖于 uri。

如果您需要任何进一步的信息,请告诉我。谢谢

通过在 uri 中指定模块并在 lua 脚本中执行 lua 解决了这个问题。