添加时间:2019-03-12 19:45:46 编辑:成都网站建设 文章内容: 4079个字 阅读时间:约12分钟
SEO伪静态为Discuz!目录化伪静态插件,本插件可以实现Discuz!版块与帖子URL目录化伪静态,以及实现更灵活的各种类型的个性化URL设置,和对Discuz!其它伪静态功能比如像标签、主题分类等伪静态进行补充。
---------------------------------
高于X3.2版本不支持。
---------------------------------
实现版块URL目录化伪静态;
实现帖子URL目录化伪静态;
支持将帖子标题写进URL,实现帖子URL中文化;
实现分区伪静态;
实现主题分类列表页伪静态;
实现分类信息列表页伪静态;
实现列表页帖子入口统一,比如主题分类和分类信息帖子链接、精华、热门、投票、各种筛选条件下的帖子链接,实现与普通帖子链接统一;
实现标签伪静态,支持将标签写进URL。
本插件只需对服务器伪静态规则进行配置,伪静态规则插件后台智能生成,无需修改任何Discuz!系统文件,适用于所有使用Discuz!默认链接的模板,便于升级,便于切换模板。
本插件主要支持Apache,Nginx,IIS6/7/8,Litespeed,Kangle等服务器,暂不支持Lighttpd,Zues等其它服务器。
安装方法
将插件文件夹上传至source/plug/里。
从后台安装并启用。
进行设置后确认,每次设置之后都要更新一下伪静态规则(规则是智能生成的,已经对一些常见的设置进行了判断)。
然后点击插件导航的“查看rewrite规则”,将相应的重写规则复制到服务器相应的位置即可。
如果是Apache虚拟主机,复制规则到论坛根目录的.htaccess文件中;
如果是Apache独立主机,复制规则到服务器apache/conf/httpd.conf文件中,独立主机如果开启htaccess功能的话不要在论坛根目录放有.htaccess文件;
如果是Nginx主机,一般是复制规则到服务器nginx/conf/nginx.conf文件中,放在server{ }里面一般也是location / { 的前面;有些主机是通过include引用规则的,要复制到被引用的文件里面;
IIS6主机提供了ISAPI_Rwrite2.9的httpd.ini规则,将规则放在空间根目录,如果是ISAPI_Rewrite3.x版本还要按说明修改一下规则。
如果是IIS7主机,复制规则到web.config文件中,规则前不要有空行;一般放在空间的根目录;
各主机的伪静态设置可能不一样,Apache独立主机和Nginx主机,每次设置并更新规则后都要重启一下。
标签默认是拒绝蜘蛛的,标签伪静态后可以将论坛根目录下misc.php文件内的 $discuz->reject_robot(); 一句删除掉,要不然的话搜索引擎不收录。
***此插件并不会改变后台SEO设置中伪静态URL格式,所以在配合自定义页面使用时,需要修改伪静态URL格式并修改系统文件,如下:
第一步,后台——SEO设置:
论坛主题列表页 {fid}/{page}
论坛主题内容页 {fid}/qq{tid}/{page}
这里的qq是为和插件的伪静态规则统一,如果要改成其他字母就要把此插件提供的伪静态规则内qq也改了,不统一打不开网页。
第二步,修改系统文件:
在source/function/function_core.php内查找:
if($type == 'forum_forumdisplay') {
list(,,, $fid, $page, $extra) = func_get_args();
$r = array(
'{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
'{page}' => $page ? $page : 1,
);
} elseif($type == 'forum_viewthread') {
list(,,, $tid, $page, $prevpage, $extra) = func_get_args();
$r = array(
'{tid}' => $tid,
'{page}' => $page ? $page : 1,
'{prevpage}' => $prevpage && !IS_ROBOT ? $prevpage : 1,
);
替换为:
if($type == 'forum_forumdisplay') {
list(,,, $fid, $page, $extra) = func_get_args();
$r = array(
'{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
'{page}' => $page ,
);
} elseif($type == 'forum_viewthread') {
list(,,, $tid, $page, $prevpage, $extra) = func_get_args();
$fid = DB::result_first("SELECT fid FROM ".DB::table('forum_thread')." WHERE tid = '$tid'");
$r = array(
'{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
'{tid}' => $tid,
'{page}' => $page ,
'{prevpage}' => $prevpage && !IS_ROBOT ? $prevpage : 1,
);