让DEDE的文章和列表使用二级域名,实现千万级子站点

突发奇想,额,算了,还是招了吧。这个功能其实早就有了,有人做过了,也有客户联系开发这个功能。

让DEDE的文章和列表使用二级域名,据说这样的SEO效果比较好。这里的比较好,并不是一定说文章收录得就多,就快,而是说权重可能会高一点,收录稳定一点。

但有朋友说,这样的效果做出来,收录会慢一些。

1,要求IIS支持rewrite或者Apache支持mod_rewrite
2,没有独立服务器则要求支持.htaccess
3,一个能做泛解析的域名

第一步,将咱的域名泛解析过来,就是*.4wei.cn解析到..8.8.8,这个过程太复杂

接下来做第二步,将.htaccss上传到网站根目录,实现二级域名的转发,并禁止人访问以前的html页面,因为相同的内容可能会造成被K的杯具。

[php]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} [^.]+\.4wei\.cn$
RewriteCond %{HTTP_HOST} !^[a-zA-Z]{1,3}\.4wei\.cn$
RewriteCond %{HTTP_HOST} !^(admin|blog|www)\.4wei\.cn$
RewriteRule ^/?$ %{HTTP_HOST} [NC]
#将12345.4wei.cn的请求重写到 4wei.cn/content.12345.html
RewriteRule ^(\d+)\.4wei\.cn$ /content/$1.html [C]
</IfModule>

<FilesMatch (.*)\.html$>
#使用了二级域名,以前的htm文件就不要让人访问了
order allow,deny
deny from all
</FilesMatch>
[/php]

接下来做程序的修改。这得分2种情况。

  • 文章不多,生成静态那可以直接用rewrite实现
  • 如果文章很多,那可以使用伪静态来实现,这很简单;但如果想生成静态文件,那得做一点伤筋动骨的事情。

额,手痛,写了一天代码,才发现坚持写博也是一件考验人的事情。

程序修改涉及到channelunit.func.php中栏目地址和文章地址的生成函数,以下列出修改方法。

[php]
//获得文章网址
/*************************************************
如果要获得文件的路径,直接用
GetFileUrl($aid,$typeid,$timetag,$title,$ismake,$rank,$namerule,$typedir,$money)
即是不指定站点参数则返回相当对根目录的真实路径
**************************************************/
function GetFileUrl($aid,$typeid,$timetag,$title,$ismake=0,$rank=0,$namerule=”,$typedir=”,
$money=0, $filename=”,$moresite=0,$siteurl=”,$sitepath=”)
{
return "http://{$aid}.{$GLOBALS[‘cfg_siteurl’]}/";
}
//获得指定类目的URL链接
//对于使用封面文件和单独页面的情况,强制使用默认页名称
function GetTypeUrl($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2,$moresite=0,$siteurl=”,$sitepath=”)
{
global $cfg_typedir_df;
return "http://list{$typeid}.{$GLOBALS[‘cfg_siteurl’]}/";
}
[/php]

将栏目和文章的地址替换以后,功能基本上完成。接下来的工作是给文章分页做处理,结果发现这个效果实现起来真是挺难,技术不到位,只能先安于现状,等待更新。