ecshop系列:search的静态化

一般说来搜索的结果静态化可以持久的保持搜索结果,给客户良好的印象

ecshop 的搜索结果是 search.php?encode=base64编码字符串

我们希望用 /search_搜索关键字_p页码.html 来做静态优化

那么方法是什么呢:

首先写 .htaccess 文件

RewriteRule ^search_(.+?)_p([0-9]+).html$  search2\.php\?keywords=$1&page=$2 [QSA,L]

我们复制 search.php 成 search2.php 注释掉行18-行66

然后加入

 $string["keywords"]=addslashes($_GET["keywords"]); 

 $string["page"]=addslashes($_GET["page"]); 

 $string["search_encode_time"] = $_SERVER["REQUEST_TIME"];

测试 http://域名/search_关键字_p1.html
如果和 http://域名/search2.php?keywords=关键字&page=1
的结果一致
然后我们去修改页码处的连接
行 501

$pager = get_pager2('search_', $pager['search'], $count, $page, $size);

在include/lib_main.php 里面 复制get_pager 函数成 get_pager2
然后修改成如下

 $url_format = $url . $param_url . 'page=';
        $url_format2 = $url . $param['keywords'] . '_p';
        $pager['page_first'] = ($page - $_offset > 1 && $_pagenum < $page_count) ? $url_format2 . "1.html" : '';
        $pager['page_prev']  = ($page > 1) ? $url_format2 . $page_prev.".html" : '';
        $pager['page_next']  = ($page < $page_count) ? $url_format2 . $page_next.".html" : '';
        $pager['page_last']  = ($_to < $page_count) ? $url_format2 . $page_count.".html" : '';
        $pager['page_kbd']  = ($_pagenum < $page_count) ? true : false;
        $pager['page_number'] = array();
        for ($i=$_from;$i<=$_to;++$i)
        {
            $pager['page_number'][$i] = $url_format2 . $i.".html";
        }

ecshop系列:search的静态化》上有6条评论

  1. 你好,经测试linux平台下正常,而win平台出现中文无法搜索,出现很多乱码。而英文正常,想知道下,是什么原因呢?

  2. 我们复制 search.php 成 search2.php 注释掉行18-行66 希望可以写明下 具体的代码。66行是什么。

    • 18行 if (empty($_GET[‘encode’]))

      67行 require(dirname(__FILE__) . ‘/includes/init.php’);
      的部分,18-66行删除,,67行保留

发表评论

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