本文主要介绍url重写可以用什么接口(url重写sessionid)?,下面一起看看url重写可以用什么接口(url重写sessionid)?相关资讯。
本章主要介绍如何用lua重写url。其实url重写也可以通过nginx来完成,但是当重写规则比较复杂的时候,使用nginx就没那么方便了。lua可以轻松解决这里用到的几个核心api,即ngx.redirect和ngx.exec。
ngx.redirect,顾名思义,就是执行重定向动作。重定向将导致url更改,返回302状态代码,浏览器将重新启动对重定向url的新请求。用法很简单。
旧的uri/索引/文章?id = 10000 ngx . redirect( ;/article ;..ngx.var.is_args..ngx.var.args)新uri/文章?id=10000 ngx.exec内部直接完成请求,直接返回内容。网址不会变,用法和上面差不多。
旧的uri/索引/文章?id = 10000 ngx . exec( ;/article ;..ngx.var.is_args..ngx.var.args)新的uri/索引/文章?id=10000为了让url重写写在一个地方,便于维护,我们可以对之前封装的mvc框架进行扩展。
添加这段代码
lite/mvc.lua
- url重写开始本地ret,rewrite = pcall (require, 重写 )-安全引入重写模块,如果不是则不会给出错误如果ret then local c _ ret,r _ ret = pcall (rewrite.exec,uri) - c_ret表示成功执行,r _ ret表示重定向,两者都为真,表示成功重写,所以如果c _ ret和r _ ret then返回end-url重写不继续,然后在lua目录中增加一个rewrite.lua文件,内容如下。
rewrite.lua
local _ m = { } function _ m . exec(uri)local rewrite _ urls = { } local query string = ngx . var . args if query string = = nil thenquerystring = end rewrite _ urls[ ;/索引/文章 ]= ;/文章? ..query string local match _ url = rewrite _ urls[uri]if match _ url then-ngx . redirect(match _ url)-url change ngx . exec(match _ url)。- url不变return true end return failed journey _ m url不限于当前站点,可以跨域名。比如在一些非常常见的场景下,电脑端网页在手机问时,可以调整到另一个域名或页面,以便更好地在移动终端上显示。举个例子,
local agent = ngx . var . http _ user _ agent if agent ~ = nil then local m,ret = ngx.re.match(agent, android | webos | iphone | ipod |黑莓 )如果m ~ = nilten-重写...同上,但外层多了一层判断。判断设备结束的示例代码见demo10。
标签:
重写重定向
了解更多url重写可以用什么接口(url重写sessionid)?相关内容请关注本站点。