本文最后更新于 2020-05-23【1425 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!

前两天分享了一个 typecho 首页静态化的方法,然而,很不幸的是,今天发现搜索出了问题,发现无法进行搜索,遇到问题怎么办?当然是解决他啊!

问题追踪

遇到问题不慌,先找原因,这两天对博客动的手脚不多,一个是用了一个首页静态化生成 html 的脚本,另一个是对 js 做了一些变动。首先把 js 文件恢复,发现问题仍然存在,说明这不是原因嘛。

上大招,开 F12,发现搜索提交时报 405 错误,好了现在非常明确了,是首页纯静态 html 带来的问题。现在有两个解决办法,一个是放弃首页静态化,作为当代青年,怎么可以直接就放弃!当然是选择继续修复啊!

原因分析

搜索了一下,首先发现 405 错误返回代码是请求行中指定的请求方法不能被用于请求相应的资源,说人话就是如 nginx / Apache 之类的后台 web 服务器不允许静态文件响应 POST 请求。

对于 http 返回错误 405 而言,一般的解决办法是调整请求方法,如将 POST 改成 GET.

解决办法

既然不能对首页静态文件进行 POST 请求,那么就让搜索回到它本来该去的地方呗,将搜索的 action 地址调整为/search。例如,在本站使用的主题 initial 中,其搜索代码如下(在 header.php 文件中):

<div id="site-search">
<form id="search" method="post" action="<?php $this->options->siteUrl(); ?>">
<input type="text" id="s" name="s" placeholder="输入关键字搜索" required />
<button type="submit"></button>
</form>
</div>

修改搜索提交时 POSTaction 地址:

<div id="site-search">
<form id="search" method="post" action="<?php $this->options->siteUrl(); ?>search">
<input type="text" id="s" name="s" placeholder="输入关键字搜索" required />
<button type="submit"></button>
</form>
</div>

大功告成!

参考

文章目录
文章目录


推荐使用:阿里云 云翼计划学生优惠、ECS、轻量应用等产品与服务【 点击注册

本文作者:Quanyin Tang

本文链接:Typecho 站内搜索报 405 错误原因解析与解决办法 - https://www.imtqy.com/typecho-search-405.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!