宝塔面板Nginx设置任意路径301重定向

网极科技6个月前代码笔记585

接到一个客户的诉求,需要将指定路径进行301重定向,由于宝塔设置重定向只有域名(即根目录),无法对子目录或其他任意路径进行重定向,所以需要手写Nginx的重定向规则。

301重定向和伪静态有什么区别?

这是我们首先要明确的问题,伪静态是访问URL不变,但是内部请求到了另一个URL,经常用来隐藏真实地址,比如后台地址,api地址等等。而301则是当访问旧URL时,服务器会发送301状态码作为响应,告知客户端该URL已永久移动到另一个URL,并且客户端会自动跳转到新URL。301重定向通常用于将旧的URL结构指向新的URL结构,或者将一个URL重定向到另一个相关的URL。
301重定向和伪静态是两种不同的概念:

  1. 301重定向是指通过HTTP状态码301将一个URL重定向到另一个URL。这意味着当访问旧URL时,服务器会发送301状态码作为响应,告知客户端该URL已永久移动到另一个URL,并且客户端会自动跳转到新URL。301重定向通常用于将旧的URL结构指向新的URL结构,或者将一个URL重定向到另一个相关的URL。

  2. 伪静态是将动态生成的URL通过重写规则(例如在Nginx配置文件中的rewrite指令)重写为看起来像静态URL的形式。实际上,伪静态URL仍然是由动态脚本处理的,只是通过重写规则将URL进行了美化,更加友好、易读和搜索引擎友好。伪静态可以提高URL的可读性和搜索引擎优化,并且对于一些使用静态文件服务器的情况,也可以更好地适应。

总结来说,301重定向是通过修改HTTP响应代码来告知客户端URL的移动,而伪静态是通过修改URL的外部形式(不影响服务器内部处理逻辑)来获得更好的URL美观性和可读性。两者用途和实现方式都不同,适用于不同的场景。

301重定向和伪静态设置的位置有什么不同?

301重定向和伪静态设置的位置有所不同。下面是它们分别应该设置的位置:

  1. 301重定向的设置通常是在Web服务器的配置文件(如Nginx的server块或Apache的.htaccess文件)中进行。你可以在服务器配置文件中的特定位置或条件下设置重定向规则。这些规则告诉服务器在收到请求时,将特定的URL重定向到另一个URL。这样,无论访问的是旧的URL还是新的URL,服务器都会发送301状态码,告知客户端该URL已永久移动,并自动将其重定向到新的URL。

  2. 伪静态的设置也是在Web服务器的配置文件中进行,通常是通过重写规则来实现。对于Nginx来说,你可以在location块内设置重写规则,以将动态的URL重写为看起来像静态的URL。这样,当客户端请求伪静态URL时,服务器会根据重写规则将其重写为动态请求,然后动态处理该请求并返回结果。重写规则可以根据规则匹配的URL路径和参数进行定义,然后将其转化为实际的动态请求。

总之,301重定向和伪静态都是通过在服务器配置文件中设置不同的规则来实现的,用于优化URL的处理和使用。具体的设置位置会根据你所使用的Web服务器和配置文件来确定。

宝塔面板中设置301重定向的位置

在宝塔面板中打开网站设置,能看到伪静态和根目录301重定向的位置,如果要指定目录进行301重定向,需要查看配置文件:

上图中 就记载了重定向文件的目录,我们进入这个目录,创建一个后缀为.conf的文件,文件名随意,因为配置文件引用的是该目录下所有.conf的文件
然后进行代码书写,可先在宝塔面板中配置一个301的根目录域名跳转,查看他的配置文件写法,去书写即可。我们客户的需求是将帝国cms的 /e/tags/?tagname=关键词 301重定向到 /tag/关键词/ 代码如下:

if ($arg_tagname) {
                return 301 /tag/$arg_tagname/;
            }

相关文章

为什么要用ServerLess架构部署企业官网

为什么要用ServerLess架构部署企业官网

企业官网作为企业的重要对外门户,承载的功能不然而喻。 企业官网经常遇到的问题被攻击很多非技术企业对于网站的运维并不擅长,更加没有专业的工程师进行运维,遇到攻击,手足无措,只能眼睁睁看着网站打...

仿真气球冒险任务(BART)的简单网页版实现

仿真气球冒险任务(BART)的简单网页版实现

仿真气球冒险任务(BART)模拟真实世界的风险情境, 具有高生态性, 稳定性和可靠性等优点, 已经成为风险决策研究中最常用的实验范式之一。我们用纯html+js+css简单实现了下,可以在浏览器中运行...

【精选】PHP将股票日K线数据转换为季K线数据

【精选】PHP将股票日K线数据转换为季K线数据

使用PHP来将股票日K线数据转换为季度K线数据。具体实现方法如下:获取日K线数据,例如从数据库中查询出所有日期的股票数据,保存在一个数组中,每个元素包含如下信息: $day_data = [...

php通过日K计算周K、月K、季K、年K

php通过日K计算周K、月K、季K、年K

实现思路: 首先读取股票日K线数据,存储到数组中。然后分别计算周K、季K、月K的数据,存储到新的数组中。最后将转换后的数据保存到文件中,以备后续使用。 下面是实现代码的示例:【精选】PHP将股...

如何解决服务器每天固定时间点流量带宽异常?

如何解决服务器每天固定时间点流量带宽异常?

处理服务器流量高峰问题服务器在每天固定的时间点流量消耗很大,这可能是因为这个时间段是用户活跃度的高峰期,导致请求量猛增,让服务器承受不小的压力。但是,如果没有进行有效的流量管理和负载均衡,这种情况可能...

迁移wordpress站点到阿里云函数计算

迁移wordpress站点到阿里云函数计算

wordpress作为一款常用的建站工具,存在大量的老站需要维护升级,本文讲一下如何迁移到阿里云函数计算,使用Serverless架构进行部署wordpress 在函数计算上全新安装wordpres...