我正在从Apache迁移到Nginx,我需要一种方法来转换Apache的重写标志[B]。
在应用重写转换之前,[B]标志会转义所有非字母数字字符。 例如
x & y/z
将转换为
x%20%26%20y%2Fz
在Nginx中有没有办法做到这一点?我在网上找到的示例仅删除了这些字符,但我需要一种转换它们的方法。
任何信息将不胜感激。
谢谢
答案 0 :(得分:0)
Nginx没有为此提供默认功能。 相反,您可以使用lua module来转换特殊字符
步骤是:
apt-get install luarocks
luarocks install html-entities
htmlEntities = require('htmlEntities')
local mymodule = {}
function mymodule.convert(string)
return string:gsub("[^a-zA-Z]", function(c) return htmlEntities.encode(c) end)
end
return mymodule
http {
lua_package_path "/path1/path2/?.lua;;";
...
,要使用该模块,可以使用* _by_lua指令。例如在位置
set_by_lua $escape "return require('mymodule').convert(ngx.var.name);" $name;