广告
返回顶部
首页 > 资讯 > 服务器 >利用Nginx实现URL重定向的简单方法
  • 169
分享到

利用Nginx实现URL重定向的简单方法

2024-04-02 19:04:59 169人浏览 安东尼
摘要

目录1. 概述2. 使用 Nginx 实现 URL 的重定向2.1 使用场景2.2 单纯的重定向2.3 依据原 URL 重定向补充:Nginx根据url参数重定向1.判断url路径2

1. 概述

老话说的好:取乎上,得其中;取乎中,得其下。因此我们不妨把目标定的高一些,去努力,才能得到更好回报。

言归正传,今天我们来聊聊 使用 Nginx 实现 URL 的重定向。

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/h5/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/h5-$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/h5-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重定向的文章就介绍到这了,更多相关Nginx URL重定向内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 利用Nginx实现URL重定向的简单方法

本文链接: https://www.lsjlt.com/news/145508.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用Nginx实现URL重定向的简单方法
    目录1. 概述2. 使用 Nginx 实现 URL 的重定向2.1 使用场景2.2 单纯的重定向2.3 依据原 URL 重定向补充:Nginx根据url参数重定向1.判断url路径2...
    99+
    2022-11-13
  • 怎么利用Nginx实现URL重定向
    本文小编为大家详细介绍“怎么利用Nginx实现URL重定向”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么利用Nginx实现URL重定向”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. 概述老话说的好:取乎...
    99+
    2023-06-29
  • Express URL跳转(重定向)的实现方法
    Express是一个基于Node.js实现的Web框架,其响应HTTP请求的response对象中有两个用于URL跳转方法res.location()和res.redirect(),使用它们可以实现URL的...
    99+
    2022-06-04
    跳转 重定向 方法
  • PHP中利用路由模块实现URL重定向和参数过滤的方法
    随着互联网的发展,网站的访问量不断增加,URL的处理变得更加重要。为了提高网站的安全性和可维护性,我们需要对URL进行重定向和参数过滤。在PHP中,可以通过路由模块来实现这些功能。本文将介绍如何使用路由模块实现URL重定向和参数过滤,并提供...
    99+
    2023-10-21
    URL重定向 路由模块 参数过滤
  • Shell 重定向:一种简单却强大的编程方法?
    在 Shell 编程中,重定向是一种非常有用的技术。它可以让你把命令的输出写入文件、从文件读取输入、或者把命令的输出传递给另一个命令。在本文中,我们将讨论 Shell 重定向的用法及其优点,以及演示一些常用的重定向操作。 重定向的基本语法...
    99+
    2023-06-17
    javascript shell 重定向
  • js项目中双向数据绑定的简单实现方法
    目录前言发布订阅者模式结果调用总结前言 双向数据绑定 指的是当对象的属性发生变化时能够同时改变对应的UI,反之亦然。换句话说,如果我们有一个user对象,这个对象有一个name属性...
    99+
    2022-11-12
  • PHP和Django教程:重定向的实现方法
    PHP和Django教程:重定向的实现方法 重定向(Redirect)是Web开发中常用的一种技术,它可以将用户从当前页面或URL地址重定向到另一个页面或URL地址。重定向通常用于实现用户登录、注册、退出等功能,以及处理异常请求等场景。本文...
    99+
    2023-11-12
    django 教程 重定向
  • 如何使用Python和Laravel函数实现重定向:一个简单的指南
    重定向是Web开发过程中一个非常重要的概念。它可以帮助你将用户引导到正确的页面,同时也能提高用户体验和SEO排名。在本文中,我们将介绍如何使用Python和Laravel函数实现重定向。 Python是一种流行的编程语言,拥有强大的功能和...
    99+
    2023-10-22
    laravel 函数 重定向
  • 简单了解Java方法的定义和使用实现
    目录什么是方法?方法的定义2021.6.2 方法的重载(重要笔试可能遇到)命令行传参2021.6.3可变参数(也叫不定项参数)递归(重要,不推荐使用)2021.6.5什么是数组数组声...
    99+
    2022-11-12
  • 利用Go Plugin实现插件化编程的简单方法
    目录前言1.快速开始2.注意事项总结前言 说到插件这个东西,很多人都不陌生,一般来说,插件化有几个好处,一个是增加程序扩展性,丰富功能。另外,还可以实现热更新,有些大型应用,动辄几个...
    99+
    2022-11-12
  • PHP中的关键字:HTTP重定向的实现方法
    在Web开发中,HTTP重定向是一种常见的技术,它可以将用户的请求重定向到另一个URL,以实现页面跳转等功能。在PHP中,我们可以使用header函数来实现HTTP重定向,本文将详细介绍PHP中HTTP重定向的实现方法。 一、HTTP重定...
    99+
    2023-11-03
    http 重定向 关键字
  • Linux定时删除日志的简单实现方法
    导语 linux是一个很能自动产生文件的系统,日志、邮件、备份等。虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情。 项目中会生成各种各样的日志,随着时间的推移,...
    99+
    2022-06-04
    linux定时删除日志文件 linux定时清日志脚本 linux定时删除日志
  • Pytorch实现简单自定义网络层的方法
    目录前言一、不带参数的层二、带参数的层三、总结四、参考附:pytorch获取网络的层数和每层的名字前言 Pytorch、Tensoflow等许多深度学习框架集成了大量常见的网络层,为...
    99+
    2022-11-11
  • Unix中实时重定向的Java实现方法是什么?
    Unix系统中的实时重定向是一种非常实用的功能,它可以让我们将命令行输出直接重定向到指定的文件或设备上,而不需要等到命令执行完毕再进行输出。这种实时重定向在很多场景下都非常有用,比如在进行调试或者监控系统运行状态时,都可以使用实时重定向来...
    99+
    2023-10-02
    重定向 实时 unix
  • 重定向 leetcode 函数:Python 的实现方法是什么?
    重定向是一种将程序的输出从标准输出流(通常是终端)转换到另一个输出流的方法。在Python中,我们可以使用sys模块中的函数来实现重定向。在本文中,我们将讨论如何在Python中实现重定向LeetCode函数。 LeetCode是一个非常流...
    99+
    2023-06-30
    重定向 leetcode 函数
  • Java实现定时任务最简单的3种方法
    目录一、Timer二、ScheduledExecutorService三、Spring Task1、开启定时任务2、添加定时任务Cron 表达式知识扩展:分布式定时任务1、ZSet ...
    99+
    2022-11-13
  • Android简单实现自定义流式布局的方法
    本文实例讲述了Android简单实现自定义流式布局的方法。分享给大家供大家参考,具体如下: 首先来看一下 手淘HD - 商品详情 - 选择商品属性 页面的UI 商品有很多尺码...
    99+
    2022-06-06
    自定义 流式布局 方法 布局 Android
  • Java 定时任务-最简单的3种实现方法
     一、Timer Timer是JAVA自带的定时任务类,实现如下: public class MyTimerTask {     public static void main(String[] args) {         ...
    99+
    2023-09-02
    java Java 定时任务 Spring 定时任务 java 定时任务 spring 定时任务
  • Python实现网络端口转发和重定向的方法
    本文实例讲述了Python实现网络端口转发和重定向的方法。分享给大家供大家参考,具体如下: 【任务】 需要将某个网络端口转发到另一个主机(forwarding),但可能会是不同的端口(redirecting...
    99+
    2022-06-04
    端口 重定向 方法
  • 利用Python提取PDF文本的简单方法实例
    目录第一步,安装工具库第二步,编写代码第三步,执行最后的话你好,一般情况下,Ctrl+C 是最简单的方法,当无法 Ctrl+C 时,我们借助于 Python,以下是具体步骤: 第一步...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作