Nginx Rewrite規則

来源:https://www.cnblogs.com/shitou-st/archive/2019/05/19/10884318.html
-Advertisement-
Play Games

1.基礎知識點 (1)Rewirte規則也稱為 規則重寫,主要功能是實現瀏覽器訪問HTTP URL的跳轉,其正則表達式是基於Perl語言。 (2)對收縮引擎優化(SEO),利於收索引擎抓取網站頁面。 (3)隱藏網站URL真實地址。 (4)網站變更升級,可以基於Rewrite臨時重定向到其他頁面。 ( ...


1.基礎知識點

(1)Rewirte規則也稱為 規則重寫,主要功能是實現瀏覽器訪問HTTP URL的跳轉,其正則表達式是基於Perl語言。

(2)對收縮引擎優化(SEO),利於收索引擎抓取網站頁面。

(3)隱藏網站URL真實地址。

(4)網站變更升級,可以基於Rewrite臨時重定向到其他頁面。

(5)有利於伺服器實現偽靜態。

2.Rewrite結尾表示符

(1)last:相當於apache里的(L)標記,表示完成rewrite匹配。(瀏覽器地址欄URL地址不變)

(2)break:本條規則匹配完成後,終止匹配,不再匹配後面的規則。(瀏覽器地址欄URL地址不變)

(3)redirect:返回302臨時重定向,瀏覽器地址欄會顯示跳轉後的URL地址。

(4)permanent:返回301永久重定向,瀏覽器地址欄會顯示跳轉後的URL地址。

3.Rewrite規則常用表達式

(1)    匹配任何單字元;

(2)? 匹配0到1個字元;只匹配一次;

(3)*   匹配0到多個字元;

(4)+  匹配1到多個字元;

 

(5)[0-9]  匹配字元串0-9

(6)[^0-9] 不匹配字元串0-9

(7)^  字元串開始標誌

(8)$ 字元串結束標誌

(9)\n 轉義換行標誌

4.Nginx Rewrite變數常用於匹配HTTP請求頭信息、瀏覽器主機名、URL等。

5.Rewrite配置在nginx的location塊中;

(1)將dks.net跳轉至www.dks.net

if($host='dks.net')    {
    rewrite ^/(.*)$    http://www.dks.net/$1     permanent;
    }
  # $host內置nginx變數,匹配用戶訪問的功能變數名稱
  # $1表示引用第一個括弧的內容,是用戶輸入的內容;如果不使用$1引用,則只會匹配根

(2)將訪問www.dks.net跳轉至www.test.com/new.index.html

rewrite    ^/$    http://www.test.com/new.index.html     permanent;

(3)訪問 /dks/test01/跳轉至/newindex.html,瀏覽器地址不變

rewrite    ^/dks/test01/$    /newindex.html    last;

(4)多功能變數名稱跳轉 www.dks.net

if($host!='www.dks.net')    {
    rewrite    ^/(.*)$    http://www.dks.net/$1    permanert;
    }

(5)訪問文件和目錄不存在跳轉至index.php

  !-f 和 -f 判斷文件

  !-d 和 -d 判斷目錄

  !-e 和 -e 判斷文件和目錄

  !-x 和 -x 判斷文件是否可執行

if(!-e    $request filename)    {
    rewrite    ^/(.*)    /index.php    last;
    }

(6)目錄對換 /xxx/123456——> /xxx?id=123456

  \d+ 代表匹配數字,相當於[0-9]

rewrite    ^/(.+)/(\d+)    /$1?id=$2    last;

(7)判斷瀏覽器User Agent跳轉

if($http_user_agent    ~MSIE)    {
    rewrite ^(.*)$/ie/$1  break;
    }

(8)禁止訪問以.sh | .flv  |  .mps為文件尾碼的文件

location ~.*\.(sh|flv|mp3)$    {
    return 403;
    }

(9)將移動用戶訪問跳動至移動端。

if($http_user_agent ~*  "(Android)|(iphone)|(Mobile)|(WAP)|(UCWEB)")    {
    rewrite ^/$    http://m.dks.net/    permanent;
    }

(10)匹配URL訪問字元串跳轉

if($args ~* tid=13)    {
    return 404;
    }

(11)訪問/10690/dks/123  跳轉至/index.php?tid/10690/items=123

rewrite    ^/([0-9]+)/dks/(.+)$    /index.php?tid/$1/items=$2    last;

 6.多rewrite規則跳轉

rewrite ^/dks/(.*)/$ /newindex.html permanent;  #可以跳轉
rewrite ^/newindex.html$ /dks/test01/index.html permanent;
rewrite ^/dks/(.*)/$ /newindex.html break;    #break 終止跳轉,執行下一條rewrite規則
rewrite ^/newindex.html$ /dks/test01/index.html permanent;
rewrite ^/dks/(.*)/$ /newindex.html last;    #last  跳轉,但下麵那條rewrite規則匹配不上,因為last使地址欄url地址不變,所以下麵的那條rewrite規則匹配不上;
rewrite ^/newindex.html$ /dks/test01/index.html permanent;    #此條規則匹配不上上邊的url地址

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • //原文參考https://blog.csdn.net/lanchunhui/article/details/52503332 你以為你定義了一個類的對象,其實在編譯器看來你是聲明瞭一個函數 修改為: 當構造函數中存在一些參數時: 當構造函數的參數帶預設值: ...
  • [toc] 創建ashop sso web單點登陸系統 先創建好模塊, 然後配置pom.xml文件 加入spring的配置文件 然後配置web.xml文件, 並把靜態資源放到webapp目錄下. 打包部署模塊測試, 能看到如下效果則項目搭建成功.   用戶名唯一性驗證 |請求方法|GET| ...
  • day23 03 組合的例子 一、用到組合的方式,編寫一個圓環,並能夠計算出它的周長和麵積 運行結果: 二、創建一個老師類,老師有生日,生日也是一個類,涉及組合的方法 運行結果: 三、複習 1、面向對象編程 思想:角色的抽象,創建類,創建角色(實例化),操作這些實例 關鍵字:class 基本框架: ...
  • 本人是一位學生,正在學習當中,可能BUG眾多,請見諒並指正,謝謝!!! 學生列表實現 HTML: PHP: 添加學生實現 HTML: PHP: ...
  • 在eclipse裡面運行代碼即可,如果您是其他應用,請選擇對您有幫助的代碼即可,如果有寫錯或不懂的地方請聯繫QQ:1633420056,謝謝,祝學習進步 <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here ...
  • 文章大綱 一、許可權框架介紹二、Shiro基礎介紹三、Spring Boot整合Shiro代碼實戰四、項目源碼與資料下載五、參考文章 一、許可權框架介紹 1. 什麼是許可權管理 許可權管理屬於系統安全的範疇,許可權管理實現對用戶訪問系統的控制,按照安全規則或者安全策略控制用戶可以訪問而且只能訪問自己被授權的資 ...
  • /*設計模式:對問題行之有效的解決方式。其實它是一種思想。1,單例設計模式。 解決的問題:就是可以保證一個類在記憶體中的對象唯一性。必須對於多個程式使用同一個配置信息對象時,就需要保證該對象的唯一性。如何保證對象唯一性呢?1,不允許其他程式用new創建該類對象。2,在該類創建一個本類實例。3,對外提供 ...
  • 此方法為:進入單用戶模式,直接修改新密碼覆蓋掉以前的root密碼。 操作步驟: 1、進入單用戶模式 2、修改root密碼 1、進入單用戶方法: 1)啟動Linux時,通過按上下鍵(其他鍵也可以)讓Linux引導啟動停留內核選擇階段,在出現如下界面: 2)輸入“e”編輯,如下界面: 3)選擇如下,再次 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...