洞悉互聯(lián)網(wǎng)前沿資訊,探尋網(wǎng)站營銷規(guī)律
作者:狐靈科技 | 2020-02-07 23:18 |點(diǎn)擊:
很多時(shí)候我們使用nginx做偽靜態(tài)的時(shí)候需要使用目錄形式的URL。這也會(huì)出現(xiàn)一些問題,比如帶/斜杠的可以打開 不帶斜杠的就404了。
有時(shí)候問了能兼容所有URL,偽靜態(tài)就要搞好多。 最近在開發(fā)門戶網(wǎng)站 客戶還有靜態(tài)網(wǎng)址,偽靜態(tài)規(guī)則數(shù)量已經(jīng)將近200條。很多用了目錄形式的URL
這里記錄一下一個(gè)在URL尾部自動(dòng)增加斜杠,URL尾部沒有斜杠的自動(dòng)跳轉(zhuǎn)到帶斜杠的URL網(wǎng)址。并且不影響其他文件。
往上很多教程是直接 rewrite 跳轉(zhuǎn),這樣如果你有其他文件的話也一樣會(huì)跳轉(zhuǎn)。我做了些改進(jìn),增加了判斷。可以完美兼容。
規(guī)則如下:
if (!-f $request_filename){
rewrite ^(.*[^/])$ $1/ permanent;
}
?
注意將上面三行代碼放到你偽靜態(tài)規(guī)則的 尾部,這樣不影響已經(jīng)存在的規(guī)則。自己的規(guī)則匹配不到的情況下最后才會(huì)跳轉(zhuǎn)。
這樣可以針對(duì)目錄 針對(duì)html結(jié)尾的就不好用了 更好的解決辦法在文末
放的位置如下圖
這樣還會(huì)出現(xiàn)一個(gè)問題 那就是如果訪問的是html 文件 也會(huì)自動(dòng)加 就變成了
https://www.www.kxlw.net/jzzs/876.html/
這樣也導(dǎo)致網(wǎng)址打不開 因此要加一個(gè)判斷 最終使用如下代碼 同樣加在最后面
接下來對(duì)這段代碼進(jìn)行一個(gè)解釋:
1、if (-d $request_filename),如果請(qǐng)求的是一個(gè)文件夾,則為真,進(jìn)到if語句中執(zhí)行
2、rewrite 是執(zhí)行 url 重寫操作。
3、^/(.*)([^/])$ 表示以/符號(hào)開始并緊跟著任何字符,同時(shí)不是以/為結(jié)束的字符串,在我的url 中,(.*) 表示的 news。
4、http://$host/$1$2/ 表示的重寫后的地址,$host 是請(qǐng)求的域名,$1 是前面第一個(gè)括號(hào)里的內(nèi)容,在我的 url 里就是 news。
5、permanent 表示,返回永久重定向的 HTTP 狀態(tài) 301。