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

网极科技11个月前代码笔记1277

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

相关文章

明道云集成我司API接口范例

明道云集成我司API接口范例

有个客户购买了我司的智能快递地址解析接口,需要集成到明道云系统,所以写这个教程帮助大家。 第一步,在明道云创建如下表单其中第二个解析地址查询按钮为:左侧组件–高级–API查询 第二步,在集...

https网页无法加载http的文件,给html头部添加一段代码搞定

https网页无法加载http的文件,给html头部添加一段代码搞定

在强制要求https协议的情况下,一年一签的SSL很多时候忘记续签,导致成为http协议,进而引发文件加载不到的问题 https与http能否共存https地址中,如果加载了http资源,浏...

win11右键菜单改回win10小工具

win11右键菜单改回win10小工具

最近将电脑升级到了windows11,但是右键菜单显示不完整,需要点击两侧才有重命名那些功能,感觉很不方便,需要改回win10那样的菜单,于是做了这个小工具,直接运行即可修改。如下图: 提交修改后,...

PHP7.1+ 7.2 7.4 json_encode 造成float数据精度异常情况

PHP7.1+ 7.2 7.4 json_encode 造成float数据精度异常情况

php7.1+版本进行json处理时,精度异常到很长的数值如下图本来原数据是没有这么大的精度的,小数点后面2-4位而已,而经过json_encode处理后就成这样的了。解决办法,给php文件开头加下如...

wordpress标题重复检测插件,发布文章时检测标题是否重复

wordpress标题重复检测插件,发布文章时检测标题是否重复

当我们的wordpress网站有越来越多的内容时,很难发现自己发布了重复的文章,所以写了个这个插件。 在发布文章时候,自动检测是否和已有文章标题重复,如果重复就拦截发布,存入草稿箱,并且页面...

使用xunsearch进行php全文检索

使用xunsearch进行php全文检索

迅搜(xunsearch)是采用 C/C++ 基于 xapian 和 scws 开发的全文搜索引擎解决方案,适用于php全文检索、mysql全文检索和各种站内搜索。支持海量数据高速检索,功能强大、...