人老是習慣在懶散中擁抱自我。html
每次遇到坑了,就巴望着留下點什麼來記錄一下,之前老是經過給代碼增長註釋來備忘。固然,博客是最好的記憶工具,沒有之一。web
這兩天公司產品頻繁新上線一些周邊,須要經過配置URL來實現跳轉到不一樣的周邊頁面。固然前置機仍是Nginx,我喜歡它。shell
場景以下:windows
公網80端口經過NAT映射到內網某臺機器的81端口,目前須要增長一個url(已使用這個url作好二維碼已發放至外部),url爲:http://www.domain.cn/web/test(結尾沒有斜槓)。Nginx配置以下:app
location /web/test/ { alias /www/download/app/; index index.html; }
結果:dom
經過http://www.domain.cn/web/test/ 訪問正常,跳轉到預期的index.html頁面工具
經過http://www.domain.cn/web/test 訪問不正常,經過console,發現訪問該url時,301至http://www.domain.cn:81/web/test,結果不出意外的是404。測試
開始覺得是原業務系統已佔用該URL,是否衝突致使。立刻本身把本身否決了這個想法。url
下載windows版本的Nginx,測試之,一切正常。思路轉移到到這個81端口。爲何會跳轉到81端口呢?spa
百思不得其解,曲線解決這個問題,從「/」的問題開始下手,爲何加斜槓就OK,不加斜槓就跳轉到81端口。想經過Rewrite解決這個問題,增長配置以下:
location /web/test/ { if (-d $request_filename) { rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent; } alias /www/web/test/; index index.html; }
問題照舊。
能否禁止Nginx默認的301呢?Google獲得該結果:
port_in_redirect off;// 沒找到如何禁止301,但找到了在301時不帶端口進行301
reload,問題解決。