天天看點

Nginx RewriteNginx Rewrite

1.什麼是<code>rewrite</code>

<code>rewrite</code>即<code>url</code>重寫, 主要實作<code>url</code>位址重寫, 以及重定向, 就是把傳入<code>web</code>的請求重定向到其他<code>url</code>的過程。

2.rewrite使用場景

1.<code>url</code>位址跳轉,例如使用者通路<code>bgx.com</code>将其跳轉到<code>xuliangwei.com</code> , 或者當使用者通過<code>http</code>的方式通路<code>bgx.com</code>時,将其跳轉至<code>https</code>的方式通路<code>bgx.com</code>

2.<code>url</code>僞靜态, 将動态頁面顯示為靜态頁面方式的一種技術, 便于搜尋引擎的錄入, 同時減少動态<code>url</code>位址對外暴露過多的參數, 提升更高的安全性。

3.搜尋引擎<code>seo</code>優化依賴于<code>url</code>路徑, 以便支援搜尋引擎錄入

rewrite示例

在比對過程中可以引用一些nginx的全局變量

rewrite比對優先級

例1:使用者通路/abc/1.html實際上真實通路是/ccc/bbb/2.html

例2:使用者通路/2018/ccc/bbb/2.html實際上真實通路是/2014/ccc/bbb/2.html

例3:使用者通路/test目錄下任何内容, 實際上真實通路是http://www.xuliangwei.com

例4:使用者通路course-11-22-33.html實際上真實通路是/course/11/22/33/course_33.html

例5:将http請求,跳轉至https

<code>rewrite</code>指令根據表達式來重定向<code>uri</code>, 或者修改字元串。 可以應用于<code>server,location, if</code>環境下, 每行<code>rewrite</code>指令最後跟一個<code>flag</code>标記,支援的<code>flag</code>标記有如下表格所示:

對比flag中break與last

<code>last</code>與<code>break</code>對比總結:

對比<code>flag</code>中<code>redirect</code>與<code>permanent</code>

繼續閱讀