Typecho 站内搜索报 405 错误原因解析与解决办法
前两天分享了一个 typecho 首页静态化的方法,然而,很不幸的是,今天发现搜索出了问题,发现无法进行搜索,遇到问题怎么办?当然是解决他啊!
本文最后更新于 2020-05-23【1426 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!
前两天分享了一个 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>
修改搜索提交时 POST
的 action
地址:
<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>
大功告成!
参考
本文作者:Quanyin Tang
本文链接:Typecho 站内搜索报 405 错误原因解析与解决办法 - https://www.imtqy.com/typecho-search-405.html
版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
上了广告?加载略慢啊
先试试效果,毕竟还是要恰饭的呀