一、问题说明
前一篇文章为优化网站加载速度,给 Typecho 站点开启首页静态化,生成 index.html 静态页面,并将静态文档优先级调至首位后,网站搜索功能出现异常:提交搜索表单直接报错 405 Not Allowed,无法正常检索内容。
产生该问题的主要原因是:静态 HTML 文件仅支持 GET 访问,不接收 POST 表单请求。Typecho 搜索功能依赖 POST 提交动态请求,网站默认优先加载 index.html 静态页,动态搜索请求无法转发至 index.php 程序入口,最终触发 405 请求不允许而报错。
二、解决方案
通过 Nginx 规则区分动静请求:普通首页访问走静态页面加速,搜索 POST 请求、带搜索参数请求强制转发动态 PHP 入口,兼顾静态加速效果与搜索功能正常使用。
三、操作步骤
- 进入宝塔面板,打开对应网站配置文件,找到站点 server 配置块;
- 在 server{} 内部空白处,添加以下合规 Nginx 规则(无语法报错、兼容所有 Nginx 版本);
- 保存配置,检测语法并重载 Nginx 即可生效。
适配代码
生效命令
1.非宝塔面板需在服务器执行命令
nginx -t
nginx -s reload
2.宝塔面板如图

四、运行逻辑说明
- 普通用户直接访问网站首页(无参数 GET 请求):正常加载
index.html静态页面,保留首页加速效果; - 提交搜索表单、URL 携带
?s=搜索参数:自动绕过静态页面,转发至index.php动态程序处理,完美适配 Typecho 搜索逻辑,彻底解决 405 报错。

