本帖最后由 coolhey 于 2015-5-15 22:09 编辑
写在:2015.5.15日
12年底网站实施目录化伪静态后,今天再回头看看,我网站好几个目录的关键字都排在了百度的首页。可见该目录下相关性帖子的权重确传递给这个目录。建议,伪静态目录化虽然麻烦,且偶尔抽风,但真的很值得做,前提是该目录下的帖子与版块的相关度高,且能不断更新相关内容,对SEO来说是绝对是个非常好的选择。
友情提示:
此文仅适合于winnt 、win2000 ,IIS6的虚拟主机(VPS没试过),lunix的不适用!
本人菜鸟一个,在仿地宝网目录化 伪静态吃尽了苦头,求助帖为证:
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
仿地宝网目录化 伪静态如何配置?高手帮帮忙
https://discuz.dismall.com/thread-3167500-1-1.html
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
帖子发出去后,回声寥寥,求人不如求己,痛定思痛,终于摸索出win II6仿地宝网目录化伪静态完全解决方案!
★ ★★更重要的是,我会解析每一个步骤,分析其所以然,对菜鸟来说最好不过的了★ ★★
---------------------------------------------------------------------------------------------------
第一步、知道你的主机类型是什么?
你的查找空间类型,安装空间到虚拟主机后,后台--首页--系统信息可以看到。以上图片为我的主机类型winnt II6,如果你的虚拟主机跟我的配置一样,那么在论坛上搜到的lunix Apache教程的与你无关啦。
第二步、想清楚你需要什么类型的伪静态URL?
例如我希望版块的形式是www.xxx.com/rumen
而希望帖子的URL形式是 www.xxx.com/rumen/{tid}-{page}.html
结构是 网站----版块---文章,层次不是很深,据说这样会有利于SEO优化
☆☆ ☆因为没搞懂{prepage}的作用,我不要它了,发觉没什么影响,欢迎大虾们来普及一下常识☆☆ ☆
第三步、修改function_core.php 下 forum_forumdisplay 的源代码-----作用应该是生成URL的规则:【我猜的,欢迎指正】
修改方法来自于:X2.5伪静态,IIS目录伪静态,仿地宝网,之前的伪静态地址照样可以访问
https://discuz.dismall.com/thread-3130046-1-1.html
☆☆ ☆感谢原作者!☆☆ ☆
-----------------------------------------------------------------------------------
首先 需要改一个系统文件 请自己做个备份哦
打开source\function\function_core.php 搜索:forum_forumdisplay
找到以下内容
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 ? $page : 1, ★★★★注意此处我与原作者不同★★★★
'{prevpage}' => $prevpage && !IS_ROBOT ? $prevpage : 1,
);
----------------------------------------------------------------------------------
分析: '{page}' => $page ? $page : 1 -------控制的是版分页、帖子分页的第一页是否显示,
如地宝网的服务版块URL是 http://www.tiboo.cn/fuwu/,但如果此代码红色部分不删除,伪静态的生成规则下,这个版块的
首页会变为http://www.tiboo.cn/fuwu/1/ -----------多不爽是吧,所以我们要删掉
源代码中共有两个 page相关的,上面的那个控制版块,下面的控制帖子。
由于我想自己的帖子显示格式为
www.xxx.com/rumen/{tid}-{page}.html ,所以第二个我没有删掉!
红色添加的两行常代码我看不懂,站长们直接照搬即可
第四步、httpd.ini 编写
由于我的域名下只有论坛,没有门户和其它xxx,所以只选了 论坛主题列表页 和 论坛主题内容页 两项,站长们可以根据自己的需要开启门户、空间、专题等等,规则编写参考 论坛的。
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
RewriteRule ^(.*)/(\w+)/([0-9]+)*$ $1/forum\.php\?mod=forumdisplay&fid=$2&page=$3&$5
RewriteRule ^(.*)/(\w+)/([0-9]+)-([0-9]+)\.html(\?(.*))*$ $1/forum\.php\?mod=viewthread&tid=$3&page%3D1&page=$4
RewriteRule ^(.*)/(\w+) $1/forum\.php\?mod=forumdisplay&fid=$2&page=1 (2014.3月更新)
再增加上面一条规则可以实现 访问 某板块时,忘记输入最后一个\而导致404错误例如输入www.xxx.com\fuwu www.xxx.com\fuwu\ 效果一样,不会出现404错误
|
|
同一行中,同样背景色的要对应起来,即相当于一个萝卜一个坑。如果不对应起来,伪静态后的URL根本访问不了论坛相应的版块 或者 帖子,
出现 404页面 或者 抱歉,指定的主题不存在或已被删除或正在被审核 那是必然的事情。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
可以学习官方默认的来总结
forum-{page}.html ➹➹➹forum-(\w+)-([0-9]+)\.html➹➹➹forumdisplay&fid=$2&page=$3&$5
thread-{tid}{page}-{prepage}.html➹➹➹ thread-([0-9]+)-([0-9]+)-([0-9]+)\.html➹➹➹ viewthread&tid=$2&extra=page\%3D$4&page=$3&$6
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
OK,在文本编辑完成后,重命名为httpd.ind 上传到 论坛所在的目录。我的论坛在根目录,所以上传到了空间的web 下。
第五步、后台伪静态配置
后台--全局--SEO设置 ,填好,可用 勾选上 √ , 如下 ( 同伪静态规则中对应)
看,就是这样对应的,{fid}/{page} ➹➹➹ www.xxx.com/rumen/2
{fid}/{tid}-{page}.html➹➹➹ www.xxx.com/goutu/13-1.html
在回头看看 httpd.ini的规则,一个萝卜一个坑
{fid}/{page}➹➹➹(\w+)/([0-9]+)
{fid}/{tid}-{page}.html➹➹➹(\w+)/([0-9]+)-([0-9]+)\.html(\?(.*)) ★ 红色部分是 比如你输入
www.xxx.com/goutu/13-1.html?.1234 照样可以访问帖子
【终极经验】如果你目录化伪静态后 出现 版块或者帖子不能打开,其根本原因是 没有一一对应,就如钥匙 对不上 锁,你怎么开门?
出现问题,你得检查 httpd.ind 跟 后台SEO URL伪静态 两项!
第六步、工具---更新缓存,仿地宝网目录化伪静态 大功告成
本人菜鸟一个,u第一次做站,以上纯属个人摸索出来的经验,肯定有很多错漏之处,希望大家将就着点啊!
2012/12/25新增加内容:
目录化伪静态后,发帖不正常/404错误的完美解决方案
https://discuz.dismall.com/thread-3184856-1-1.html
|