So implementieren Sie die URL-Umleitung mit Nginx

WBOY
Freigeben: 2023-05-27 22:16:20
nach vorne
2770 Leute haben es durchsucht

    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;
     }
    Nach dem Login kopieren

    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;
    }
    Nach dem Login kopieren

    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;
        }
    }
    Nach dem Login kopieren

    2. 判断url参数

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

    需要特别注意的是,由于if语句的不稳定性,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;
        }
    Nach dem Login kopieren

    Das obige ist der detaillierte Inhalt vonSo implementieren Sie die URL-Umleitung mit Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage