如何将WordPress搜索结果的URL做伪静态处理

乐分享主编 2019-11-17 506 阅读

对于一些了解SEO的站长朋友而言,对URL非常敏感,wordpress的搜索结果默认以domain?s=结构,而seoer则希望得到最符合心意的URL形式。而本文试图解决修改搜索结果的URL,以让大家满足这种渴望。
在实现之前,我们需要用到:
add_rewrite_rule()路由地址
修改search_form
那么接下来我们就来一步一步的实现这个过程。
1、在你的主题文件functions.php中增加下面的这个语句:

add_rewrite_rule('^search/([^/]*)','index.php?s=$matches[1]','top');

2、进入后台,更新一下固定链接,刷新路由表,这样路由才会生效
这个时候,使用新的地址就可以访问搜索结果页了,例如我们可以用 utubon.com/search/多站点 来获得乌徒帮关于多站点的相关文章。
3、修改你的search_form。找到你的搜索框代码,有的是放在searchform.php中,有的直接放在其他主题文件里面,将<form>的提交动作进行阻止,我们可以使用jQuery来实现:

$('form.search').submit(function(){
var $this = $(this),$search = $this.find('input[name=s]'),$value = $search.val();
window.loaction.href = '/search/' + $value;
return false;
});

这样就可以让你的搜索框在搜索的时候直接进入到路由好的地址。
可能存在的问题:
搜索词中存在“/”怎么办?
末尾是否可以加“/”?
原来的?s=keywords的形式仍然可以访问,是否可以自动跳转到新地址?
如果搜索词中存在“/”,请先urlencode。末尾可以加“/”,只要按照上面的格式,稍加修改就可以了。如果你必须将?s=keywords跳转到新地址,那么在你的search.php开头增加一个判断:

if(isset($_GET['s']))wp_redirect(home_url('/search/'.$_GET['s']));

这样既可实现跳转,但我个人认为没有必要,搜索结果页应该直接写进robots.txt屏蔽。

最新游戏