LUA $1的讀寫問題

整理一下:

Nginx 正則表達(dá)式捕獲組變量$1、$2、$3等,也可以通過這個(gè)界面讀取,方式為通過ngx.var[1]、ngx.var[2]、ngx.var[3]等。

以上是ngx_lua api說明中的摘錄。

按api說明?應(yīng)該是能取到值的。但寫代碼去取值?沒取到,代碼是這樣寫的:

location?=?/sumc?{

? ? set?$1?9;

? ? set?$2?10;

? ? content_by_lua?'

? ? ? ? ngx.say(ngx.var[1])

? ? ';

}

運(yùn)行結(jié)果:nil

一直沒取到值?,搞不清楚原因

location?=?/sumb?{

? ? set?$bb?99;

? ? content_by_lua_block?{

? ? ? ? ngx.say(ngx.var.bb)

? ? }

}

運(yùn)行結(jié)果:99

這種寫法是定了一個(gè)具體的參數(shù),是能輸出正確結(jié)果到網(wǎng)頁的。

問題的關(guān)鍵在于:

sumb中的寫法,我們實(shí)質(zhì)上是設(shè)置一個(gè)變量并賦值。所以可以讀到。而$1,它是利用正則表達(dá)式去匹配參數(shù),第一個(gè)參數(shù)就是$1。(第一個(gè))參數(shù)本身是可以讀寫的,但$1是規(guī)則,它代表參數(shù)列表中的第一個(gè)參數(shù)。規(guī)則本身不能寫,只能讀。故正確寫法如下:

location ~ /sumc/(9)/(10) {

? ? #set?$1?9;

? ? #set?$2?10;

? ? content_by_lua?'

? ? ngx.say(ngx.var[1])

? ? ngx.say(ngx.var[2])

? ? ';

}

更多信息請(qǐng)參考:

ngx_lua API

agentzh 的 Nginx 教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容