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

网极科技1年前代码笔记2273

接到一个客户的诉求,需要将指定路径进行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/;
            }

相关文章

通过阿里云实现IPv6升级改造

通过阿里云实现IPv6升级改造

场景示例某些企业现有的IT系统部署在本地IDC机房,IDC机房为纯IPv4网络,企业因业务发展需求,需要面向IPv6客户端提供服务。但是,使企业现有IT系统支持IPv6是一个复杂的系统工程,改造难度大...

php绕过cloudfare进行网址数据采集,php网页采集程序

php绕过cloudfare进行网址数据采集,php网页采集程序

程序功能本程序使用浏览器内核,可伪装浏览器,对任意网址进行数据采集,采集结果以php程序进行二次处理。 支持对于单个网址进行采集,可自由设置循环次数。可多开不受限制。程序会调用浏览器内核打开网页...

table表格css样式

table表格css样式

效果图 table { border-collapse: collapse; margin: 0 auto;...

将网页文字保存为Word文档的PHP代码

将网页文字保存为Word文档的PHP代码

以下是将网页文字保存为Word文档的PHP代码示例: <?php // 获取网页内容并保存为Word文件 function saveAsWord($url, $fileName) {...

Qt Installer FrameWork制作中文版windows安装包_QtIFW 4.7.0设置中文

Qt Installer FrameWork制作中文版windows安装包_QtIFW 4.7.0设置中文

Qt Installer FrameWork下载地址:https://download.qt.io/official_releases/qt-installer-framework/ 环境配置将bi...

php使用workerman实现秒极定时任务

php使用workerman实现秒极定时任务

通过宝塔面板的计划任务,我们最多可以将定时任务设置在分钟级别,需要秒级别就不可完成了,所以需要借助其他程序,这里选择workerman.netWorkerman是一款PHP开发的开源高性能的PHP 应...