自己动手简单实现vbb的URL静态化
2009-07-11 12:40
267 查看
只要作简单的修改,就能实现vbb的URL静态化,当然,需要服务器支持rewrite功能。
使用的论坛版本为vbulletinv3.6.8英文标准版。
-------------------------第一步---------------------------
-------------------------------------------------
在includes/functions.php中找到:
------------------------------------------------
PHP代码:
----------------------------------------------------------
改为:
---------------------------------------------------------
PHP代码:
-------------------------------------------------
如果你想同时重写archive,请作如下修改:
------------------------------------------------
在archive/index.php中找到如下语句:
--------------------------------------------
PHP代码:
-----------------------------
改为
----------------------------------------------------------
PHP代码:
-------------------------第二步---------------------------
-----------------------------------------------------
在论坛的根目录下增加文件".htaccess",文件中包含如下内容:
-----------------------------------------------------
代码:
---------------------------------------------------
已知Bug,
在forumdisplay.php的分主题分页菜单处;
在forumdisplay.php的主题列表的快速分页链接处;
在showthread.php的主题分页菜单处;
部分动态页没有重写过来,但不影响实际使用。
对archive的重写,没有发现不正常。
如果你对这个Bug介意的话,你可以只选择重写archive,这样你所要修改的仅仅是对archive/index.php中的一点点的修改(方法同上),而不必修改includes/functions.php文件,并把".htaccess"文件放入archive文件夹中,然后在".htaccess"中只保留:
-----------------------------------------------------
代码:
---------------------------------------------------
这样你在打开archive功能的情况下还是可以为你的论坛提高搜索引擎的搜索效果的。
-------------------------------------------------
很明显我的改法太没水平了,因为这是我第一次写rewrite的,我对正规表达式也是一知半解。不过我对VBB的代码倒是十分的了解,觉得VBB的编程风格还不错,用来学习PHP4,是一个不错的选择,不过要学PHP5的话,看WBB3的代码绝对是首选。
本来打算把VBB的URL重写进一步完善,写成一个VBB插件,并增加后台的开关功能(setting)的,不过学校开学了,我上大四了,想再过一次独木桥,比较忙,而且网线过几天就到期了,不想续了,租个房子,闭关半年,所以,就不写了。
使用的论坛版本为vbulletinv3.6.8英文标准版。
-------------------------第一步---------------------------
-------------------------------------------------
在includes/functions.php中找到:
------------------------------------------------
PHP代码:
functionprint_output($vartext,$sendheader=true) { global$pagestarttime,$querytime,$vbulletin; global$vbphrase,$stylevar; if($vbulletin->options['addtemplatename']) {
----------------------------------------------------------
改为:
---------------------------------------------------------
PHP代码:
//######################################### //增加两个Function开始 functionrewrite_forum($extra1,$sid,$fid,$order,$page=0,$extra2='') { return'<a'.stripslashes($extra1).'href="f-'.($sid?substr($sid,0,32):0).'-'.$fid.'-'.($order?$order:0).'-'.($page?$page:1).'.html"'.stripslashes($extra2).'>'; } functionrewrite_thread($extra1,$sid,$tid,$page=0,$extra2='') { return'<a'.stripslashes($extra1).'href="t-'.($sid?substr($sid,0,32):0).'-'.$tid.'-'.($page?$page:1).'.html"'.stripslashes($extra2).'>'; } //增加两个Function结束 //######################################### functionprint_output($vartext,$sendheader=true) { global$pagestarttime,$querytime,$vbulletin; global$vbphrase,$stylevar; //######################################### //增加程序开始 $searcharray[]="/\<a(.*)href\=\"forumdisplay\.php\?(s\=(.*))?f\=(\d+)(&order\=(asc|desc))?(&page\=(\d+))?\"([^\>]*)\>/e"; $replacearray[]="rewrite_forum('\\1','\\3','\\4','\\6','\\8','\\9')"; $searcharray[]="/\<a(.*)href\=\"showthread\.php\?(s\=(.*))?t\=(\d+)(&page\=(\d+))?\"([^\>]*)\>/e"; $replacearray[]="rewrite_thread('\\1','\\3','\\4','\\6','\\7')"; $vartext=preg_replace($searcharray,$replacearray,$vartext); //增加程序结束 //######################################### if($vbulletin->options['addtemplatename']) {
-------------------------------------------------
如果你想同时重写archive,请作如下修改:
------------------------------------------------
在archive/index.php中找到如下语句:
--------------------------------------------
PHP代码:
if(SLASH_METHODANDstrpos($archive_info,'/archive/index.php/')===false) { exec_header_redirect($vbulletin->options['bburl'].'/archive/index.php/'); }
-----------------------------
改为
----------------------------------------------------------
PHP代码:
if(SLASH_METHODANDstrpos($archive_info,'/archive/')===false) { exec_header_redirect($vbulletin->options['bburl'].'/archive/'); }
-------------------------第二步---------------------------
-----------------------------------------------------
在论坛的根目录下增加文件".htaccess",文件中包含如下内容:
-----------------------------------------------------
代码:
RewriteEngineOn
#修改"/vbb"为你的论坛目录地址,如果程序放在根目录中,请将"/vbb"修改为"/"
RewriteBase/vbb
RewriteRule^f-([0-9a-z]+)-([0-9]+)-(0|asc|desc)-([0-9]+)\.html$forumdisplay.php?s=$1&f=$2&order=$3&page=$4
RewriteRule^t-([0-9a-z]+)-([0-9]+)-([0-9]+)\.html$showthread.php?s=$1&t=$2&page=$3
RewriteRule^archive/((f|t)-[0-9]+\.html)$archive/index.php?$1
---------------------------------------------------
已知Bug,
在forumdisplay.php的分主题分页菜单处;
在forumdisplay.php的主题列表的快速分页链接处;
在showthread.php的主题分页菜单处;
部分动态页没有重写过来,但不影响实际使用。
对archive的重写,没有发现不正常。
如果你对这个Bug介意的话,你可以只选择重写archive,这样你所要修改的仅仅是对archive/index.php中的一点点的修改(方法同上),而不必修改includes/functions.php文件,并把".htaccess"文件放入archive文件夹中,然后在".htaccess"中只保留:
-----------------------------------------------------
代码:
RewriteEngineOn
#修改"/vbb"为你的论坛目录地址,如果程序放在根目录中,请将"/vbb"修改为"/archive"
RewriteBase/vbb/archive
RewriteRule^((f|t)-[0-9]+\.html)$index.php?$1
---------------------------------------------------
这样你在打开archive功能的情况下还是可以为你的论坛提高搜索引擎的搜索效果的。
-------------------------------------------------
很明显我的改法太没水平了,因为这是我第一次写rewrite的,我对正规表达式也是一知半解。不过我对VBB的代码倒是十分的了解,觉得VBB的编程风格还不错,用来学习PHP4,是一个不错的选择,不过要学PHP5的话,看WBB3的代码绝对是首选。
本来打算把VBB的URL重写进一步完善,写成一个VBB插件,并增加后台的开关功能(setting)的,不过学校开学了,我上大四了,想再过一次独木桥,比较忙,而且网线过几天就到期了,不想续了,租个房子,闭关半年,所以,就不写了。
相关文章推荐
- 自己动手实现一个简单c编译器
- 自己动手实现一个简单的 IOC
- 自己动手实现简单的线程池
- 自己动手实现简单权限控制
- 自己动手写CPU之第七阶段(4)——验证简单算术操作指令实现效果
- 自己动手实现简单对象关系库之概述
- 【自己动手写数据结构】 -- 简单顺序栈的实现
- 自己动手实现数据结构——排序算法1(冒泡、插入、归并、简单选择)(C++实现)
- 《自己动手写框架4》:分布式锁的简单实现
- mfc学习笔记之如何自己动手实现最简单的mfc程序
- 自己动手实现一个简单的string类(三)
- 自己动手实现简单权限控制
- 自己动手系列——实现一个简单的LinkedLis
- 自己动手系列——实现一个简单的ArrayList
- 自己动手写CPU之第七阶段(2)——简单算术操作指令实现过程
- 【自己动手】实现简单的C++ smart pointer
- 自己动手实现简单权限控制
- 自己动手实现简单对象关系库谈到异常的处理与抛出
- 《自己动手写框架4》:分布式锁的简单实现
- [置顶] 网站浏览统计功能的简单实现-- vb2005xu自己动手系列(2)