Nginx下WordPress修改固定链接出错的解决

发布于 2024-03-17  94 次阅读


起因

搭建这个博客也有俩礼拜了,除了更新自己准备面试时的笔记外就没更新啥。看了下这个导航栏啥都没有就一个搜索和自己的icon,于是想着添加几个项目。

在wordpress后台的外观-菜单里添加了菜单项后发现分类目录会定向到Nginx的404页面。面向百度编程后看到有博客说只要在后台的设置-固定链接把固定链接结构和分类前缀一改就好。于是我把原先链接结构从

`/index.php/%category%/%post_id%`

改成了

`/%category%/%post_id%`

修改后我连自己之前发的博文都打不开了。气晕

解决方案

在百度上找了半天wordpress的解决方案都说改改固定链接格式啥的就好了,但是都没有用。盯着404网页的nginx陷入沉思后,我突然想起来这个站点是在nginx上搭建的。于是开始怀疑是不是nginx没有将固定链接的地址放行还是咋的。

结果还真是。

具体来说就是nginx上没有配置好伪静态。

啥是伪静态?

伪静态是一种在WEB开发中常见的技术手段,用于将动态网页(如PHP、ASP、JSP等生成的页面)的URL地址转换为静态网页的URL格式。其目的主要有两个:一是为了优化搜索引擎的检索(SEO),二是为了提高用户体验。在传统的动态网页URL中,通常包含问号、等号等特殊字符,如example.com/index.php?id=123,这样的URL对搜索引擎不友好,也不便于用户记忆。通过伪静态技术,可以将这样的URL重写为类似example.com/index/123.html的格式。

nginx如何配置好伪静态

在nginx的配置文件的server部分加上下边的代码:

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

这条规则的作用是尝试将所有非文件、非目录的请求重写到index.php,同时保留查询字符串。

nginx是啥?

Nginx (发音为“engine x”) 是一款轻量级的Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,它以其高性能、稳定性、丰富的功能集、简单的配置以及低资源消耗而闻名。

高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

主要特点

  • 高性能:Nginx能够处理大量的并发连接,使用非阻塞事件驱动的架构,这使得它在高并发环境下表现出色,尤其是静态内容的分发、反向代理以及负载均衡。
  • 轻量级:Nginx使用极少的系统资源,即使在非常低的硬件配置上也能运行良好。
  • 高度可配置:Nginx提供了广泛的配置选项,支持URL重写、自定义日志、在线升级等高级功能。
  • 反向代理和负载均衡:Nginx常用作反向代理服务器和负载均衡器,能够将客户端的请求转发给后端服务器,并根据配置规则分配请求,从而提高网站的可用性和性能。
  • 安全性:提供了诸如SSL/TLS加密、HTTP/2支持、防止DDoS攻击的机制等安全特性。
  • 扩展性:通过模块化设计,Nginx允许用户根据需求添加新的功能。它支持第三方模块,使得社区可以贡献和扩展Nginx的功能。

使用场景

  • 作为Web服务器:直接处理HTTP请求,快速服务静态内容,同时也支持动态内容处理,如通过与PHP-FPM等后端处理器配合运行PHP应用。
  • 作为反向代理服务器:站在客户端与一组服务器之间,接收来自客户端的请求并将其转发给内部服务器,然后将响应返回给客户端。这有助于提高安全性、性能和可靠性。
  • 负载均衡器:在多个服务器之间分配客户端请求,提高网站的处理能力和可用性,确保没有单点故障。
  • 邮件代理服务器:处理IMAP/POP3邮件服务,提供认证和加密等邮件服务支持。
Dive into the world.
最后更新于 2024-03-17