怎样实现discuz页面的随机静态化

 

效果介绍:

同一个页面可以由多个静态地址访问,比如在论坛帖子列表中,tid=1的帖子,可能会显示thead-1-1.html的访问地址,也可能是yahoo-thread-1-1.html,更多地址都可以,只要你设定你的随机种子。

参考网站:深圳科技园在线

本文目的:通过随机静态化,可实时在url中含有一些你感兴趣的关键字,url中包含的关键字的作用可体现在:seo排名,adsense广告等。本文只介绍技术实现,不涉及具体功能和风险分析,使用本方法请慎重。

discuz中如何实现静态化的?

discuz论坛已经可以通过url重写(iis添加API:Rewrite.dll),分别实现归档、论坛、帖子、个人信息、空间、标签(discuz6.0以上)的静态化。

在静态化规则中实现: 

RewriteRule  ^ (. * ) / archiver / ([a - z0 - 9 - ] + .html)$ $ 1 / archiver / index.php ? $ 2
RewriteRule 
^ (. * ) / forum - ([ 0 - 9 ] + ) - ([ 0 - 9 ] + ).html$ $ 1 / forumdisplay.php ? fid = $ 2 & page = $ 3
RewriteRule 
^ (. * ) / thread - ([ 0 - 9 ] + ) - ([ 0 - 9 ] + ) - ([ 0 - 9 ] + ).html$ $ 1 / viewthread.php ? tid = $ 2 & extra = page % 3D$ 4 & page = $ 3
RewriteRule 
^ (. * ) / profile - (username | uid) - (. + ).html$ $ 1 / viewpro.php ? $ 2 = $ 3
RewriteRule 
^ (. * ) / space - (username | uid) - (. + ).html$ $ 1 / space.php ? $ 2 = $ 3
RewriteRule 
^ (. * ) / tag - ([A - Za - z0 - 9 % ] + ).html$ $ 1 / tag.php ? name = $ 2

实现举例:

tag.php?name=[tagname]   => tag-[tagname].html    

forumdisplay.php?fid=[fid]&page=[page] =>forum-[fid]-[page].html

viewthread.php?tid=[tid]&extra=page#[reply]&page=[page]    =>thread-[tid]-[page]-[reply].html

并在include/global.func.php 文件中通过正则替换将动态链接地址转为静态链接地址。

function  rewrite_thread( $tid ,   $page   =   0 ,   $prevpage   =   0 ,   $extra   =   '' ) {
    
return   ' <a href=" ' . $tid . ' - ' . ( $page   ?   $page   :   1 ) . ' - ' . ( $prevpage   &&   ! IS_ROBOT  ?   $prevpage   :   1 ) . ' .html" ' . stripslashes ( $extra ) . ' > ' ;
}

function  rewrite_forum( $fid ,   $page   =   0 ,   $extra   =   '' ) {
    
return   ' <a href="forum- ' . $fid . ' - ' . ( $page   ?   $page   :   1 ) . ' .html" ' . stripslashes ( $extra ) . ' > ' ;
}

function  rewrite_space( $uid ,   $username ,   $extra   =   '' ) {
    
$GLOBALS [ ' rewritecompatible ' &&   $username   =   rawurlencode ( $username );
    
return   ' <a href="space- ' . ( $uid   ?   ' uid- ' . $uid   :   ' username- ' . $username ) . ' .html" ' . stripslashes ( $extra ) . ' > ' ;
}

function  rewrite_tag( $name ,   $extra   =   '' ) {
    
$GLOBALS [ ' rewritecompatible ' &&   $name   =   rawurlencode ( $name );
    
return   ' <a href=" ' . $name . ' . ' . rawurldecode ( $name ) . ' .html" ' . stripslashes ( $extra ) . ' > ' ;
}

三步实现随机静态化的方法(仅以tag和thread为例子):

1 在url重写规则中,将tag,thread的规则写为:

RewriteRule  ^ (. * ) / (.* )thread - ([ 0 - 9 ] + ) - ([ 0 - 9 ] + ) - ([ 0 - 9 ] + ).(. * )html$ $ 1 / viewthread.php ? tid = $ 3 & extra = page % 3D$ 4 & page = $ 4
RewriteRule 
^ (. * ) / (.* )tag - ([A - Za - z0 - 9 % ] + ).(. * )html$ $ 1 / tag.php ? name = $ 3

2 在include/global.func.php 文件中添加seo_rand_str()函数:

function  seo_rand_str(){
$string [ 1 =   ' shenzhen ' ;
$string [ 2 =   ' hongkong ' ;
$string [ 3 =   'domains- yahoo ' ;
$string [ 4 =   'beauty ' ;
return   $string [ rand ( 1 , 4 )];
}

这里只列出了4个随机种子示范,可根据实际情况修改或增加(不要太多了)。

注意:随机字符串不要包含中文,最好是标准域名格式(英文字母,-,数字)。

3修改rewrite_thread和rewrite_tag函数为

function  rewrite_thread( $tid ,   $page   =   0 ,   $prevpage   =   0 ,   $extra   =   '' ) {
    
return   ' <a href=" '.seo_rand_str().' -thread- ' . $tid . ' - ' . ( $page   ?   $page   :   1 ) . ' - ' . ( $prevpage   &&   ! IS_ROBOT  ?   $prevpage   :   1 ) . ' .html" ' . stripslashes ( $extra ) . ' > ' ;
}

function  rewrite_tag( $name ,   $extra   =   '' ) {
    
$GLOBALS [ ' rewritecompatible ' &&   $name   =   rawurlencode ( $name );
    
return   ' <a href=" '.seo_rand_str().' -tag- ' . $name . ' .html" ' . stripslashes ( $extra ) . ' > ' ;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
越的访问速度和负载能力 Discuz! 从创立之初即以提高产品效率为突破口,随着编译模板,语法生成内核,数据缓存和自动更新机制等独创或独有技术的应用,和坚固的数据结构及最少数据库查询设计,使得 Discuz! 可以在极为繁忙的服务器环境下快速稳定运行,切实节约企业成本,提升企业形象。 强大而完善的功能 除了一般论坛所具有的功能外, Discuz! 还提供了很大限度的个性设定。众多功能在后台预留开关,可按企业需要启用。前台全部采用编译模板技术构建,更换界面易如反掌。完善的权限设定,使管理员可控制到每个用户,每个组及所在每个分论坛的各种权限。 国际和标准的产品架构 目前发布的版本分为简体中文,繁体中文和英文三个版本。自 Discuz! 2.0 以来,因其高效国际内核的应用,使其成功走出国门,步入海外市场,商业客户遍及中国大陆,香港,台湾,北美,欧洲,澳洲,马来西亚等国家和地区。 周密的安全部署和攻击防护 Discuz! 能有效处理页面格式,保证页面及表格的完整性。安全检查应用于每一个 Discuz! 代码中,可自动屏蔽贴子及签名等中的恶意代码和跨站脚本攻击。独有的全程操作记录,使论坛运行情况随时有据可查。 持久的创新和广阔的前景 Discuz! 拥有一支富于创新的开发队伍,持续性的技术优势和不断增长的市场经验,除了强已有的市场竞争力以外,更增强了已有和潜在客户的信心,我们并不满足于现有成果,我们时刻关注国内外相关领域内的最新进展和动态,不断的进步和创新,已使越来越多的人相信 Discuz! 辉煌的明天。 操作系统要求 Discuz! 具备跨平台特性,可以运行于 Linux/FreeBSD/Unix 及微软 Windows 2000/2003 等各种操作系统环境下。我们已在软件中针对上述操作系统做了大量的测试和实地检验,保证 Discuz! 可以在上述系统中安全稳定的运行,但您仍然需要做好服务器操作系统级的安全防备措施,例如Windows用户需更改 MySQL for Windows 的初始 root 密码,避免跨目录的文件读写。类 Unix 用户需避免使用过于简单的密码,避免跨用户目录的文件读写,做好服务器上其他相关软件(如 Sendmail、ftpd、httpd)等的安全防范,使用较新的软件版本等。 如果您租用虚拟主机,一般正规和技术力量较强的虚拟主机提供商会已经做好操作系统的各项准备,用户可不必关注此部分。 推荐使用 Linux/FreeBSD 操作系统,不仅完全免费,而且可以获得更好的稳定性和负载能力。如果使用Windows 系统,请将 PHP 以 ISAPI(非 CGI)方式安装。 语言及数据库支撑环境要求 Discuz! 需要服务器上装有如下软件: 可用的httpd服务器(如 Apache、Zeus、IIS 等) PHP 4.1.0 及以上 Zend Optimizer 2.5.7 及以上 MySQL 3.23 及以上(仅针对 MySQL 版 Discuz! ) 以上软件除了 httpd 软件有可能需要购买以外,其余均为跨平台的免费软件,推荐使用以上软件的最新稳定版本,不仅拥有更多的功能,而且通常已修复了已知老版本的安全漏洞。 如果您租用虚拟主机,请咨询虚拟主机提供商,您的空间服务器是否已安装了上述软件。由于 Discuz! 的数据表具有前缀设计,因此通常情况下可以将 Discuz! 与其他软件安装在同一个数据库中,或采用不同的前缀名从而在同一个数据库中安装多个 Discuz! 论坛而不产生冲突。 您的 MySQL 数据库账号应当拥有 CREATE、DROP、ALTER等执行权限,同时文件空间需不低于 2M,数据库空间不低于 5M,通常您的虚拟空间都会满足这个条件,以满足包括 Discuz! 在内的绝大多数网络软件的正常运行。如果您不了解具体情况,请咨询您的空间提供商。 Discuz! 7.0.0 更新日志 【全新】社区 UI 设计,开创性操作引导和页面布局,大幅度提升会员使用体验 【全新】风格模板体系,打造个性论坛风格更容易,论坛展现效果更突出 【全新】论坛风格可视编辑器,支持在线设计风格,可实时预览设计效果 【全新】论坛风格管理系统,风格安装、卸载一键完成,支持风格效果图 【内置】16 款精心设计的炫酷风格和 7 套模板,供各种类型的站点选用,个性十足 【全新】论坛任务系统,进一步增强社区会员的互动行为,可利用任务增强社区的粘性、增加活跃度 【内置】会员类、帖子类、红包类、推广类、头像类 5 种论坛任务,轻松设计各种论坛任务 【支持】任务衍生,每类任务可根据申请条件、完成条件、奖励内容衍生出无数种任务 【支持】自定义任务脚本,内置自定义任务的安装、升

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值