第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

最近在做項(xiàng)目時(shí)遇到一個(gè)奇怪的問題,因?yàn)橐匦略O(shè)計(jì)url,所以用到了以下nginx重寫規(guī)則:

最近在做項(xiàng)目時(shí)遇到一個(gè)奇怪的問題,因?yàn)橐匦略O(shè)計(jì)url,所以用到了以下nginx重寫規(guī)則:

小怪獸愛吃肉 2023-04-26 19:15:24
環(huán)境:nginx 版本為 1.2.6if (-f $request_filename/index.html){  rewrite (.*) $1/index.html break; }if (-f $request_filename/index.php){  rewrite (.*) $1/index.php; }if (!-f $request_filename){  rewrite (.*) /index.php; }這個(gè)重寫規(guī)則已經(jīng)普遍使用,我也不知道有沒有什么地方不妥~(求指點(diǎn))在我沒有使用這些規(guī)則時(shí),訪問服務(wù)器上一個(gè)存在的目錄時(shí)會(huì)自動(dòng)加個(gè)斜杠,這時(shí)觸發(fā)了nginx自動(dòng)的rewrite規(guī)則,這很正常,沒有問題。但是我加了上面這些規(guī)則后,訪問服務(wù)器上已經(jīng)存在的文件夾時(shí)就不會(huì)自動(dòng)加斜杠了,而且,在我反復(fù)測試后,發(fā)現(xiàn)是第2、3條規(guī)則在作怪:1、如果只把第2條規(guī)則刪除,那么不無論你文件夾存不存在都會(huì)檢測成不存在,而且不會(huì)加斜杠,并且會(huì)直接進(jìn)入第3條規(guī)則,最終匹配進(jìn)入index.php,可以得知,此時(shí)是按文件來處理的。2、如果把第2條規(guī)則刪除,第3條規(guī)則對(duì)文件的判斷 -f 改為 -e,即文件或文件夾:if (!-e $request_filename){  rewrite (.*) /index.php; }這時(shí),問題得以解決,目錄存在時(shí)會(huì)自動(dòng)加斜杠,不存在時(shí)會(huì)匹配進(jìn)入到index.php,這正是我想要的。我很不解,求大師指點(diǎn),為什么會(huì)是這個(gè)樣子呢?另外,由于項(xiàng)目原有的一些問題,在第3條規(guī)則里面還有一大坨其它針對(duì)性的重寫規(guī)則,所以我并不希望在輸入的是文件夾而且存在時(shí)還會(huì)進(jìn)入第3條規(guī)則去匹配規(guī)則,雖然性能影響并不大。
查看完整描述

2 回答

?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

經(jīng)過多次測試,自己搞明白了。

這三條規(guī)則并沒有什么問題,第二條也并不是我之前所說的有什么詭異的地方。

首先,nginx會(huì)根據(jù)用戶自定義的規(guī)則進(jìn)行匹配,當(dāng)你輸入的路徑存在且在最后不含有斜杠時(shí),
由于我這個(gè)文件夾下存在index.php,所以$request_filename/index.php匹配第二條規(guī)則成功,注意這里的/,然后進(jìn)行之后的匹配。也就是說,只要這個(gè)文件夾是存在的,且這個(gè)文件夾下有 index.html 或者 index.php 就會(huì)匹配我上面給出的第一條或者第二條規(guī)則,這沒有任何疑問。

所以,你如果想要在文件夾存在時(shí)不會(huì)進(jìn)行第一或者二條規(guī)則之后的匹配且會(huì)自動(dòng)加斜杠,解決辦法是在第一條規(guī)則之前加上一條對(duì)文件夾的判斷:

if (-d $request_filename){   rewrite ^/(.*)([^/])$ /$1$2/ permanent;
}

這條規(guī)則的意思是,如果文件夾存在且沒有斜杠時(shí)自動(dòng)加斜杠并進(jìn)行301跳轉(zhuǎn),OK,問題解決。


查看完整回答
反對(duì) 回復(fù) 2023-04-29
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

最后一條的邏輯是,在不滿足前面條件的情況下,“如果訪問的路徑不是文件”就自動(dòng)跳轉(zhuǎn)到/index.php。

建議:在第三條之前插入一句 -e 檢測是否是文件夾,如果是,自動(dòng)加斜杠,break。

未測試,僅供參考。


查看完整回答
反對(duì) 回復(fù) 2023-04-29
  • 2 回答
  • 0 關(guān)注
  • 237 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)