
今天我们重点来介绍帝国CMS搜索页url伪静态实现方法,这类操作可以帮助站长朋友实现帝国CMS站内搜索结果页的伪静态显示,在使用帝国CMS二次开发中非常具有实用价值,需要的朋友可以参考一下,多提宝贵意见,具体实现方法如下
打开\e\search\index.php 411行左右,找到:
1
| Header("Location:result/?searchid=$searchid".$dogetvar);
|
将上面的代码修改为
1
| Header("Location:$public_r[newsurl]search-0-$searchid.html".$dogetvar);
|
打开\e\search\result\index.php 20行左右,找到
1 2
| //搜索结果 $searchid=(int)$_GET['searchid'];
|
在前面添加分页函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| //增加分页函数 function page10($num,$line,$page_line,$start,$page,$search){ global $fun_r; if($num<=$line) { return ''; } $search=RepPostStr($search,1); $url=$public_r['newsurl'].'search'; $snum=2;//最小页数 $totalpage=ceil($num/$line);//取得总页数 $firststr='<a title="'.$fun_r['trecord'].'"> '.$num.' </a> '; //上一页 if($page<>0) { $toppage='<a href="'.$url.'-0-'.$search.'.html">'.$fun_r['startpage'].'</a> '; $pagepr=$page-1; $prepage='<a href="'.$url.'-'.$pagepr.'-'.$search.'.html">'.$fun_r['pripage'].'</a>'; } //下一页 if($page!=$totalpage-1) { $pagenex=$page+1; $nextpage=' <a href="'.$url.'-'.$pagenex.'-'.$search.'.html">'.$fun_r['nextpage'].'</a>'; $lastpage=' <a href="'.$url.'-'.($totalpage-1).'-'.$search.'.html">'.$fun_r['lastpage'].'</a>'; } $starti=$page-$snum<0?0:$page-$snum; $no=0; for($i=$starti;$i<$totalpage&&$no<$page_line;$i++) { $no++; if($page==$i) { $is_1="<b>"; $is_2="</b>"; } else { $is_1='<a href="'.$url.'-'.$i.'-'.$search.'.html">'; $is_2="</a>"; } $pagenum=$i+1; $returnstr.=" ".$is_1.$pagenum.$is_2; } $returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage; return $returnstr; }
|
然后在48行左右找到
1
| $listpage=page1($num,$line,$page_line,$start,$page,$search);
|
将上面的代码修改为
1
| $listpage=page10($num,$line,$page_line,$start,$page,$search);
|
然后继续查找
1
| $search="&searchid=".$searchid;
|
将上面的代码修改为
添加伪静态规则,我们这里举得例子为Apache
,大家自行修改为自己对应的伪静态规则
1
| RewriteRule ^search-(.+?)-(.+?)\.html$ /e/search/result/index\.php\?page=$1&searchid=$2
|
如果是宝塔面板的话,需要在宝塔面板之中开启对伪静态的支持,很简单,宝塔面板中的网站设置-伪静态设置,如果选择左上角的帝国CMS伪静态设置,不过需要删除掉里面默认的伪静态规则,否则网站会打不开,然后将里面的伪静态规则改成,进针对搜索页进行伪静态设置。
1 2 3
| RewriteEngine On RewriteBase / RewriteRule ^search-(.+?)-(.+?)\.html$ /e/search/result/index\.php\?page=$1&searchid=$2
|
修改搜索模板中的提交地址为绝对地址
1
| <form action='http://www.XXXX.com/e/search/index.php' method="post" name="search_news" id="search_news">
|
然后说一下NGINX下的伪静态规则,今天为这事儿老费劲儿:
1
| rewrite ^/search-(.+?)-(.+?)\.html$ /e/search/result/index.php?page=$1&searchid=$2 last;
|
最后说一下,iis的伪静态规则添加的时候,需要在服务器上安装相关的iis插件,这一点儿无论是虚拟主机还是服务器,都会有客服帮忙调整,甚至有些是默认添加好的,所以大家只需要在Web.Config
中添加需要的伪静态规则就可以,从下面代码中挑选合适的代码复制到伪静态控制文件Web.Config
中就可以。
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="已导入的规则 2"> <match url="^c-0-(.*).html$" ignoreCase="false" /> <action type="Rewrite" url="/e/search/result/\?searchid={R:1}"/> </rule> </rules> </rewrite> </system.webServer> </configuration>
|
设置好之后,大家可以刷新网站信息,查看网站代码调用是否生效。