怎样将discuz的动态页面生成HTML的静态页面,以便搜索引擎更好的收录我的网站呢?请高手多多指导!
discuz无法生成静态页面,你所看到的discuz静态页面,是discuz所在的服务器使用了Apache这类支持urlrewrite的网站容器,urlrewrite可以将你看到的原本的url改写成任意的url
最常见的urlrewrite像xxphp/id/73或者/xx/id/73
还有的把xxphp改写成xxdo,当然discuz也是这个原理。想要实现,需要服务器的支持
discuz论坛程序是很不错的,国内很多大型论坛都是用discuz建站的,后台可以设置优化功能,设置标题和关键词还有描述等,当然这跟你的整站的发帖量还有原创帖子是有关系的,你的原创帖子很多的话,那你论坛的收录也会很好。
首先
打开source\function下的function_corephp
找到
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,
);
然后进入网站后吧->''seo设置"->"url静态化"
在"论坛主题列表页"的格式中填写:{fid}/{page}
在"论坛主题内容页"的格式中填写:{fid}/m{tid}/{page}
然后工具,更新缓存,即实现了版块目录化,贴子目录化
在"论坛"-"版块管理"中的"绑定别名"即是版块目录名
把下面这段代码复制到你的htaccess文件里,如果没有就新建一个,放到网站跟目录
# 将 RewriteEngine 模式打开
RewriteEngine On
# 修改以下语句中的RewriteBase 后的地址为你的论坛目录地址,如果程序放在根目录中,为 /,如果是相对论坛根目录是其他目录则写为 /{目录名},如:在bbs 目录下,则写为 /bbs
RewriteBase /
# Rewrite 系统规则请勿修改
RewriteCond %{QUERY_STRING} ^()$
RewriteRule ^topic-(+)\html$ portalphpmod=topic&topic=$1&%1
RewriteCond %{QUERY_STRING} ^()$
RewriteRule ^article-([0-9]+)-([0-9]+)\html$ portalphpmod=view&aid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^()$
RewriteRule ^(\w+)/([0-9]+)$ forumphpmod=forumdisplay&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^()$
RewriteRule ^thread-([0-9]+)-([0-9]+)\html$ forumphpmod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
RewriteCond %{QUERY_STRING} ^()$
RewriteRule ^group-([0-9]+)-([0-9]+)\html$ forumphpmod=group&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^()$
RewriteRule ^space-(username|uid)-(+)\html$ homephpmod=space&$1=$2&%1
RewriteCond %{QUERY_STRING} ^()$
RewriteRule ^([a-z]+)-(+)\html$ $1phprewrite=$2&%1
RewriteCond %{QUERY_STRING} ^()$
RewriteRule forum-([0-9a-z_]+)-([0-9]+)\html$ forumphpmod=forumdisplay&fid=$1&page=$2&%1
## 保留前面的部分可以不影响已经被搜索引擎收录的页面
RewriteCond %{QUERY_STRING} ^()$
RewriteRule /([0-9]+)(/([0-9]+))(/)$ forumphpmod=viewthread&tid=$1&extra=page\%3D$5&page=$3&%1 [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^()$
RewriteRule ^([0-9a-z_]+)(/([0-9]+))(/)$ forumphpmod=forumdisplay&fid=$1&page=$3&%1 [L,NC]
看你是什么情况了1新论坛,直接开启静态化,那么你的动态地址根本没有公布出来,有了和没有是一样的,保证以后别用就可以了。2老论坛,之前是动态地址,而后静态化了。那你万万不能直接屏蔽动态地址,因为动态地址都已经收录了啊,正确的做法是对动态地址做301
0条评论