实现WordPress站内搜索结果URL伪静态化

实现WordPress站内搜索结果URL伪静态化

作者 : 资源客 发布时间: 2019-12-6

众所周知,wordpress 默认搜索地址为 http://www.qq301.com/?s=keyword ,很明显这是一个动态地址,和全站伪静态有点格格不入,而且还不利于 WordPress 静态缓存。因此我们很有必要把 WordPress 站内搜索结果设置成伪静态。我们都知道 wordpress 后台可以轻松设置固定链接,可以实现文章、分类、标签等页面的 URL 伪静态化,但是 wordpress 站内搜索结果页面的 URL 依然是“http://域名/?s=关键字”的动态 URL 形式,部分 WordPress 用户觉得不符合 SEO 要求,希望把搜索结果页面的 URL 也实现“http://域名/search/关键词”的伪静态形式,其实实现方法也很简单,下面我们分享两种方法。

方法一:

只需要通过在 functions.php 文件添加相关的函数代码即可:

    //默认搜索结果伪静态
    function wp_search_url_rewrite() {
        if ( is_search() && ! empty( $_GET[\'s\'] ) ) {
            wp_redirect( home_url( \"/search/\" ) . urlencode( get_query_var( \'s\' ) ) . \"/\");
            exit();
        }
    }
    add_action( \'template_redirect\', \'wp_search_url_rewrite\' );

现在去前台搜索,就会发现结果会跳转到【/search/关键词】了,当然如果动手能力强的话,我们为了让搜索直接进入这个页面,而不是要 301 跳转,我们可以稍微改造一下这个搜索框,常规搜索框代码一般如下:

    <div id="searchbar">
        <form method="get" id="searchform" action="http://zhangge.net/">
            <input type="text" name="s" id="s" placeholder="输入搜索内容" />
            <button type="submit" id="searchsubmit">搜索</button>
        </form>
    </div>

输入内容,点击搜索后就必然会跳到 ?s=keyword 这个动态页面。所以,我们需要通过 js 代码来拦截这搜索动作,然后重新定义跳转地址,将代码如下修改即可:

    <div id="searchbar"> <form method="get" id="searchform" action="http://zhangge.net/search/">
        <input name="s" id="s" placeholder="请输入搜索内容" onkeydown="if(event.keyCode==13){return Searcher('wp');}">
        <button type="submit" id="searchsubmit" onclick="return Search('wp');">搜索</button>
    </form>
    </div>
    <script type="text/javascript">
    function Search(){
        var value=$("# s ").val()||"";
        window.open("http://zhangge.net/search/"+value+"/");
        return false;
    }
    </script>

很简单的代码,原理就是给搜索动作绑定了一个 js 函数,而这个 js 函数的功能就是获取当前输入的关键词,并拼接成一个新的地址,最后跳转过去即可。如此,就实现了 WordPress 默认站内搜索的伪静态化。很明显,这个方法适合任何 WordPress 主题。

方法二:

通过在.htaccess 文件添加伪静态规则也可以实现,把下面的代码添加到网站根目录的.htaccess 文件(对支持.htaccess 的主机有效)

RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC]
RewriteRule ^$ /search/%1/? [NC,R,L]

 

http://xzh.i3geek.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途及非法用途,否则后果自负!
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"qq301.com",如遇到无法解压的请联系管理员!
资源客是一个优秀的分享资源站,本站资源均为各位友友分享而来,特殊原创会标明如有侵犯版权等可联系删除

资源客 » 实现WordPress站内搜索结果URL伪静态化