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