效果介绍:
同一个页面可以由多个静态地址访问,比如在论坛帖子列表中,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 ^ (. * ) / 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 文件中通过正则替换将动态链接地址转为静态链接地址。
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 ^ (. * ) / (.* )tag - ([A - Za - z0 - 9 % ] + ).(. * )html$ $ 1 / tag.php ? name = $ 3
2 在include/global.func.php 文件中添加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函数为
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 ) . ' > ' ;
}