Discuz使用笔记(一)
规范化目录
规范化目录即为URL后面添加斜杠/
如输入http://www.cnblogs.com/jaywoo 自动添加/转换成 http://www.cnblogs.com/jaywoo/
之前用ISAPI_Rewrite在IIS中伪静态 不规范化目录也不会出现链接错误(为了SEO一般是范化目录的 规则为:RewriteRule ^/([^.]+[^/]$) /$1/ [L,R] ),
但在Apache中却是连接错误的,所以需要解决的。解决思路有两种
1.写两个重写规则 一个加/的 一个不加/ 这种方法不可取的 因为需要为多个目录编写
2.自动添加/ 规范化目录
Apache规范化目录网上说在Windows中会自动规范化的 但我发现却不是自动规范化的 可能是我配置有问题吧。
度娘说规范化目录是:RewriteRule ^(.+[^/])$ $1/ [R] 但我发现没有用 于是就自己写一条规则:RewriteRule ^(\w+)$ $1/ [R]
静态版块目录化和贴子目录化
现在网站一般都采用扁平的树型网状结构 即目录式导航
如:http://www.cnblogs.com/daimage/archive/2012/02/25/2367534.html
如何在Discuz中使用目录式导航呢?
一、 修改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,
);
二、 在后台管理中->全局->Seo设置->静态化URL (记得需要在修改function_core.php中代码后再设置,否则可能会出现加载CSS,JS错误)
若设置成以下格式
在"论坛主题列表页"的格式中填写:{fid}/{page}/
在"论坛主题内容页"的格式中填写:{fid}/d{tid}/{page}
则伪出来的URL则形式如下:
论坛主题列表如:http://www.cnblogs.com/jaywoo 论坛帖子页则如:http://www.cnblogs.com/jaywoo/d123456
.htaccess文件配置为:
帖子对应为:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule d([0-9]+)(/([0-9]+))?(/)?$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$5&page=$3&%1 [L,NC]
主题对应为:
若设置成以下格式:
在"论坛主题列表页"的格式中填写:{fid}/{page}/
在"论坛主题内容页"的格式中填写:{fid}/{tid}{page}.html
则伪出来的URL则形式如下:
论坛主题列表如:http://www.cnblogs.com/jaywoo 论坛帖子页则如:http://www.cnblogs.com/daimage/archive/2012/02/25/2367534.html
主题对应为:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(\w+)/$ forum.php?mod=forumdisplay&fid=$1&page={page}&%1 [L,NC]
帖子对应为:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^archiver/(fid|tid)-([0-9]+)\.html$ archiver/index.php?action=$1&value=$2&%1 [L,NC]
作者:代码哥
出处:http://daimage.cnblogs.com/
说明:本博原创文章版权归博客园和本人共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出作者名称和原文连接,否则保留追究法律责任的权利。
作者:代码哥
出处:http://daimage.cnblogs.com/
说明:本博原创文章版权归博客园和本人共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出作者名称和原文连接,否则保留追究法律责任的权利。