此功能可以将部分常用页面(如 forumdisplay.php、showthread.php 等)进行 URL 静态化转换,形成类似
http://localhost/forum-1.html 形式的超级链接,从而使论坛内容更容易被搜索引擎挖掘,提高被收录的机率。
插件名称:静态化url rewrite Beta 3.0
插件作者:guyefeng
安装难度:容易
使用版本:MolyX2.60版本
平台支持:apache iis
技术支持:
http://www.molyx.com
===================================
插件安裝簡要說明:
1.系统设置
2.添加搜索引擎设置
3.修改原程序文件
===================================
[1]
服务器设置
针对apache用户
1.首先确认您的服务器是apache架设的web服务器(此插件只使用于apache架设的服务器)Apache Web Server(独立主机用户)
首先确定您使用的 Apache 版本,及是否加载了 mod_rewrite 模块。
Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:
代码:
LoadModule rewrite_module libexec/mod_rewrite.so
代码:
AddModule mod_rewrite.c
Apache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段代码:
代码:
LoadModule rewrite_module modules/mod_rewrite.so
如果存在,那么在配置文件(通常就是 conf/httpd.conf)中加入如下代码。此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用。改好后然后将 Apache 重启。
代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)-([0-9]+).html(.*)$ $1/forumdisplay.php?f=$2&st=$3&pp=$4&$5
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+).html(.*)$ $1/showthread.php?t=$2&pp=$3&$4
RewriteRule ^(.*)/user-([0-9]+).html $1/profile.php?u=$2[L]
RewriteRule ^(.*)/archive/f-([0-9]+)-([0-9]+).html $1/index.php?f$2-$3.html[L]
RewriteRule ^(.*)/archive/t-([0-9]+)-([0-9]+).html $1/index.php?t$2-$3.html[L]
</IfModule>
如果没有安装 mod_rewrite,您可以重新编译 Apache,并在原有 configure 的内容中加入 --enable-rewrite=shared,然后再在 Apache 配置文件中加入上述代码即可。
Apache Web Server(虚拟主机用户)
在开始以下设置之前,请首先咨询您的空间服务商,空间是否支持 Rewrite 以及是否支持对站点目录中 .htaccess 的文件解析,否则即便按照下面的方法设置好了,也无法使用。
检查论坛所在目录中是否存在 .htaccess 文件,如果不存在,请手工建立此文件。Win32 系统下,无法直接建立 .htaccess 文件,您可以从其他系统中拷贝一份,或者在 魔力论坛技术支持栏目中下载此文件。编辑并修改 .htaccess 文件,添加以下内容 :
代码:
# 将 RewriteEngine 模式打开
RewriteEngine On
# 修改以下语句中的 /molyx_board 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /molyx_board
# Rewrite 系统规则请勿修改
RewriteRule forum-([0-9]+)-([0-9]+)-([0-9]+).html(.*)$ forumdisplay.php?f=$1&st=$2&pp=$3&$4
RewriteRule thread-([0-9]+)-([0-9]+).html(.*)$ showthread.php?t=$1&pp=$2&$3
RewriteRule user_([0-9]+).html profile.php?u=$1[L]
RewriteRule archive/f-([0-9]+)-([0-9]+).html archive/index.php?f$1-$2.html[L]
RewriteRule archive/t-([0-9]+)-([0-9]+).html archive/index.php?t$1-$2.html[L]
添加内容时,请遵照上面的提示,修改论坛所在的路径,然后保存。将 .htaccess 文件上传到论坛所在的目录中。进入论坛 系统设置,根据需要开启 URL 静态化 功能。
针对IIS用户
1.下载ISAPI_Rewrite(附件中有)解压缩到本地服务器上,如下图所示:
(路径随意)
2.接下来一步比较重要,打开Internet 信息服务,右键,web站点属性,点ISAPI筛选器选项卡.添加筛选器,名称自己填,路径自己指定Rewrite.dll,然后确定.如图:
3.等待后台添加url静态化设置,然后打开就可以了!
[2]
进入后台管理界面,点击常规设置中的搜索引擎设定,创建新的设置
标题:url静态化
显示顺序:(系统生成)
说明:选择“是”将对常用页面进行 URL 静态化转换,以提高搜索引擎抓取,本功能需要 Web 服务器打开相应的 UrlRewrite ,因此需要服务器权限才可使用,相应规则请参考《用户使用说明书》。注意: 当访问量很大时,本功能会轻微加重服务器负担.
所在设置组:搜索引擎设置
类型:选择是或否按钮
变量值:rewritestatus
当前值:0
默认值:0
额外内容:(空)
添加这个选项到 setting 缓冲 CACHE 文件?:选择是
点击保存更改 如图:
[3]
修改原文件程序
<1>针对functions.php文件的修改
找
代码:
if ($bboptions['gzipoutput']) {
$buffer = ob_get_contents();
ob_end_clean();
@ob_start('ob_gzhandler');
print $buffer;
}
替换为:
代码:
if ($bboptions['gzipoutput'] || $bboptions['rewritestatus']) {
$buffer = ob_get_contents();
ob_end_clean();
$user_function = array();
if ($bboptions['gzipoutput']) {
$user_function[] = 'ob_gzhandler';
}
if ($bboptions['rewritestatus']) {
$user_function[] = array(&$this, 'rewritestatus');
}
@ob_start($user_function);
echo $buffer;
}
找
代码:
function load_style()
在上一行添加
代码:
function rewritestatus($buffer){
$buffer = preg_replace("/forumdisplay.php[?]f=([0-9]+)(?:&|&)st=([0-9]+)(?:&|&)pp=([0-9]+)/i","forum-\\1-\\2-\\3.html",$buffer);
$buffer = preg_replace("/forumdisplay.php[?]f=([0-9]+)(?:&|&)pp=([0-9]+)/i", "forum-\\1-0-\\2.html", $buffer);
$buffer = preg_replace("/forumdisplay.php[?]f=([0-9]+)(?:&|&)st=([0-9]+)/i", "forum-\\1-\\2-0.html", $buffer);
$buffer = preg_replace("/forumdisplay.php[?]f=([0-9]+)/i", "forum-\\1-0-0.html", $buffer);
$buffer = preg_replace("/profile.php[?]u=([0-9]+)/i","user-\\1.html",$buffer);
$buffer = preg_replace("/showthread.php[?]t=([0-9]+)(?:&|&)pp=([0-9]+)/i","thread-\\1-\\2.html",$buffer);
$buffer = preg_replace("/showthread.php[?]t=([0-9]+)/i","thread-\\1-0.html",$buffer);
$buffer = preg_replace("/index.php[?]f([0-9]+)-([0-9]+).html/i" , "f-\\1-\\2.html?" ,$buffer );
$buffer = preg_replace("/index.php[?]f([0-9]+).html/i" , "f-\\1-0.html?" ,$buffer );
$buffer = preg_replace("/index.php[?]t([0-9]+)-([0-9]+).html/i" , "t-\\1-\\2.html?" ,$buffer );
$buffer = preg_replace("/index.php[?]t([0-9]+).html/i" , "t-\\1-0.html?" ,$buffer );
return $buffer;
}
<2>针对redirect.php文件的修改
找
代码:
$forums->func->standard_redirect("showthread.php?{$forums->sessionurl}t=".$this->thread['tid']."&pp=$page".$pid);
替换为
代码:
$bboptions['rewritestatus'] ? $forums->func->standard_redirect("thread-".$this->thread['tid']."-".$page.".html".$pid) : $forums->func->standard_redirect("showthread.php?{$forums->sessionurl}t=".$this->thread['tid']."&pp=$page".$pid);
找
代码:
$forums->func->standard_redirect("showthread.php?{$forums->sessionurl}t=".$this->thread['tid']."&p=$pid&pp=".$page."#pid".$pid);
替换为:
代码:
$bboptions['rewritestatus'] ? $forums->func->standard_redirect("thread-".$this->thread['tid']."-".$page.".html"."?p=".$pid."#pid".$pid) : $forums->func->standard_redirect("showthread.php?{$forums->sessionurl}t=".$this->thread['tid']."&p=$pid&pp=".$page."#pid".$pid);
找
代码:
$forums->func->standard_redirect("showthread.php?{$forums->sessionurl}t=".$this->thread['tid']."&pp=".$page."#pid".$post['pid']);
替换为
代码:
$bboptions['rewritestatus'] ? $forums->func->standard_redirect("thread-".$this->thread['tid']."-".$page.".html"."#pid".$post['pid']) :$forums->func->standard_redirect("showthread.php?{$forums->sessionurl}t=".$this->thread['tid']."&pp=".$page."#pid".$post['pid']);
修改完服务器配置后请进入论坛系统设置,打开 URL 静态化功能,测试功能是否正常。如果出现问题,请仔细检查你所做的每一步。
此帖由 guyefeng 在 2006-09-26 17:09 进行编辑...