Linux主机下WordPress网站无法使用中文站内搜索问题解决

三年前我还在捣鼓用Win主机装WordPress建站的时候,碰到过站内无法使用中文搜索的问题,还记录了一篇笔记,在 这里。自从换了Linux主机后,就再也没有为这个问题发愁过,然而在更新过N次WordPress版本后,最近发现这个问题在Linux主机上居然又重现了。症状就是用英文站内搜索正常,用中文就只会跳到404页,搜索不到任何东西。404返回的搜索关键词是正确的,并未出现乱码,因此可以肯定和之前用Win主机的情况是不一样的。

有时候网站排错是需要灵感的,这次灵感来的比较快,我查看了一下数据库,发现出错的网站,数据库表的编码不太一样。正常情况下WordPress网站的数据库编码应该是 utf8_general_ci,这次出错的网站,wp_posts和wp_postmeta这两个表的编码是gb2312_chinese_ci。而这个网站以前站内搜索很正常,是最近某一次更新WordPress主程序后才发现不能用中文搜索了,但具体到哪个版本不详。

在WordPress官网查到这样一篇文章,介绍了如何修复数据库编码的:https://codex.wordpress.org/Converting_Database_Character_Sets
其实就是用SQL命令把数据库和表、以及各字段分别转码,前提是先定位具体哪些要转,这个在phpMyAdmin里可以直接看到,就不赘述了。

这里为图省事,我找到了一款插件名叫“Utf8ize”。这个插件本身并不做什么数据处理,只是用来检测提醒你数据库中有哪些表和字段还不是UTF8编码的,并且会给出SQL命令,自己在服务器上运行一下就行了,很方便。还是要老话重申,操作前记得备份数据库。

插件界面,复制它给出的命令,在MySQL里面执行一遍即可。
Utf8ize - Linux主机下WordPress网站无法使用中文站内搜索问题解决
执行完毕后,之前的问题网站中文站内搜索就正常了。

总结一下,从如果你的中文WordPress网站是从3.x版本一路升级过来的,那么你的中文站内搜索有可能已经失效了。因为在3.x的时代,WP安装的时候会根据你选择的语言编码建表;而现在最新版的WP无论你的网站语言是什么,都已经统一改用UTF8编码了,因此可能造成字符搜索等一系列相关问题,建议用utf8ize这个插件排查修复一下。此外,在新建WP网站的时候,需要自己建数据库,也记得要选utf8_general_ci编码。

本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.brain1981.com/1528.html。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

如本文对你有用,请在页面右侧栏扫码领取我的支付宝红包,作为打赏吧 (喂到底是我赏你还是你赏我啊-_-!)

关注我们的微信公众号-JennyStudio 本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。

发表评论

电子邮件地址不会被公开。 必填项已用*标注