我想写一个脚本,重写一个URL在mod_lua,即我想继承查询字符串像mod_rewrite的QSA标志。
mod_rewrite配置:
RewruteCond ^/foobar/([0-9A-Za-z]+)/(.+)$
RewriteRule ^.*$ /foobar/$2?_ID_=$1 [QSA,L]
我尝试在mod_lua编码如下,但它不能很好地工作。请告诉我出什么事了?并且,它是否能够更简单的代码?
mod_lua配置:
LoadModule lua_module modules/mod_lua.so
LuaHookTranslateName /usr/local/httpd/conf/extra/lua/router.lua app_routing
/usr/地方/httpd/conf/额外的/lua/路由器。lua路由:
require "apache2"
function app_routing(r)
local matches = r:regex(r.uri, [[^/foobar/([0-9A-Za-z]+)/(.+)$]])
if matches then
r.uri = "/foobar/" .. matches[2]
if r.args then
r.args = r.args .. "&_ID_=" .. matches[1]
else
r.args = "?_ID_=" .. matches[1]
end
end
end
在我们真正着手解决这个问题之前,需要做几件事:
- r。args不应该以"?"开头,问号不存在于查询字符串中,它是一个分隔符,用于表示查询字符串的开始位置,因此它实际上不是字符串本身的一部分。 你应该打开mod_lua和你的脚本的调试开关。尝试将"LogLevel lua:debug"添加到您的配置中,并检查调试输出的错误日志。此外,使用r:info(logmessage_here)向脚本添加一些调试,它将在错误日志中吐出您自己的调试消息。
一旦这样做了,我们就有了一个值得检查提示的错误日志