中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么利用Nginx實現URL重定向

發布時間:2022-04-11 09:55:31 來源:億速云 閱讀:615 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“怎么利用Nginx實現URL重定向”,內容詳細,步驟清晰,細節處理妥當,希望這篇“怎么利用Nginx實現URL重定向”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    1. 概述

    老話說的好:取乎上,得其中;取乎中,得其下。因此我們不妨把目標定的高一些,去努力,才能得到更好回報。

    2. 使用 Nginx 實現 URL 的重定向

    2.1 使用場景

    我們日常分享一個網站地址時,常常會有這樣的效果,同樣一個網址,在電腦的瀏覽器打開,是一種效果,而在手機的瀏覽器打開,就會展現出另一種更適合手機顯示的效果。

    通常要達到這樣的效果,有兩種方式實現:

    一、使用自適應的 H5 頁面實現,根據窗口寬度的大小,自動調整頁面的布局。

    二、使用Nginx,依據終端的不同,跳轉到不同的頁面,電腦打開,跳轉到 PC端 使用的網頁,手機打開,跳轉到 手機端 使用的網頁。

    今天我們介紹一下第二種方式,是如何實現的。

    2.2 單純的重定向

    有些 URL 的重定向,新 URL 不需要繼承原 URL 的參數,例如 網站首頁,這種情況,在 Nginx 配置文件的 location 中使用 return 302 的方式進行跳轉即可。

    location / {
            # 判斷是否是移動端
            if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )
            {
                return 302 https://www.zhuifengren.com/h6/index.html;
            }
     
            proxy_pass http://myUpstream;
     }

    2.3 依據原 URL 重定向

    另一種情況就是 新 URL 需要繼承原 URL 的參數,這種情況就需要使用  rewrite 對 URL 進行改寫。

    location / {
            # 判斷是否是移動端
            if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )
            {
                rewrite (\w+-\w+)|(\?.*)$ https://www.zhuifengren.com/h6-$1-0.html$2 redirect;        
            }    
     
            proxy_pass http://myUpstream;
    }

    rewrite 的語法是: rewrite  正則表達式  改寫后的URL  redirect;

    其中 redirect 是 302 臨時重定向的意思,也可以使用 permanent 關鍵字,代表 301 永久重定向。

    使用 rewrite 對 URL 進行改寫,需要用到 正則表達式 的知識,改寫后 URL 中的 $1、$2 代表正則表達式中匹配的第一個字符串和第二個字符串,這里大家可以去了解一下正則表達式,就不細說了。

    例子中的正則表達式 (\w+-\w+)|(\?.*)$,可以將原 URL:

    https://www.zhuifengren.com/1001-1223.jsp?v=123456

    改寫為

    https://www.zhuifengren.com/h6-1001-1223-0.html?v=123456

    補充:Nginx根據url參數重定向

    1.判斷url路徑

    location / {
        if ($args ~* "/product-list?param1=val1&param2=val2") {
            rewrite ^ http://www.mysite.com/product-list/$arg_param1/$arg_param2? last;
        }
    }

    2. 判斷url參數

    if ($arg_path = 'abc'){
    	proxy_pass http://127.0.0.1/abc/$arg_path;
    }

    特別注意if is evil,nginx不提供多if判斷,沒有or這樣的判斷,所以只能用下文這種方式。

    location /api/ {
            if ($arg_token = '') {
            	proxy_pass http://127.0.0.1/abc
            }
            if ($http_token = '') {
                 proxy_pass http://127.0.0.2/abc
            }
            if ($token = paraheader) {
            	 proxy_pass http://127.0.0.3/abc
            }
            proxy_pass http://127.0.0.1:8080/app/;
            proxy_redirect off;
        }

    讀到這里,這篇“怎么利用Nginx實現URL重定向”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    彰武县| 会东县| 桐城市| 济宁市| 泸州市| 阜康市| 永德县| 青海省| 洪江市| 方城县| 海门市| 泗阳县| 乐清市| 富民县| 东乌| 忻城县| 濉溪县| 夏津县| 屏东县| 鲜城| 金堂县| 鄂伦春自治旗| 罗定市| 安国市| 囊谦县| 滁州市| 梓潼县| 皮山县| 区。| 历史| 天峨县| 尼勒克县| 福州市| 望江县| 庆安县| 阳江市| 涪陵区| 苍溪县| 漯河市| 临海市| 岱山县|