nginx 不支持 if 嵌套,也不允許在 if 中使用邏輯判斷,會(huì)報(bào)如下錯(cuò)誤:
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)前鋒,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
nginx: [emerg] "if" directive is not allowed
當(dāng)業(yè)務(wù)需要多個(gè)條件判斷時(shí),可以借助中間變量來實(shí)現(xiàn)
如:我們的網(wǎng)站在 pc 端有多個(gè)子域名, 而移動(dòng)端只有一個(gè)域名,對(duì)應(yīng)關(guān)系如下:
要實(shí)現(xiàn)的效果:在移動(dòng)端訪問 pc 域名時(shí) 301 跳轉(zhuǎn)到對(duì)應(yīng)的移動(dòng)端域名
nginx 的重寫規(guī)則如下:
# 是否為移動(dòng)端 set $mobile 0; if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) { set $mobile 1; } # 獲取子域名 set $prefix 1; if ($host ~* "sub1.test.com") { set $prefix 2; } if ($host ~* "sub2.test.com") { set $prefix 3; } if ($host ~* "sub3.test.com") { set $prefix 4; } set $sign "${mobile}${prefix}"; if ($sign = 11) { rewrite ^(.*) http://m.test.com$1 permanent; } if ($sign = 12) { rewrite ^(.*) http://m.test.com/sub1$1 permanent; } if ($sign = 13) { rewrite ^(.*) http://m.test.com/sub2$1 permanent; } if ($sign = 14) { rewrite ^(.*) http://m.test.com/sub3$1 permanent; }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。