突发奇想,额,算了,还是招了吧。这个功能其实早就有了,有人做过了,也有客户联系开发这个功能。
让DEDE的文章和列表使用二级域名,据说这样的SEO效果比较好。这里的比较好,并不是一定说文章收录得就多,就快,而是说权重可能会高一点,收录稳定一点。
但有朋友说,这样的效果做出来,收录会慢一些。
1,要求IIS支持rewrite或者Apache支持mod_rewrite
2,没有独立服务器则要求支持.htaccess
3,一个能做泛解析的域名
第一步,将咱的域名泛解析过来,就是*.4wei.cn解析到..8.8.8,这个过程太复杂
接下来做第二步,将.htaccss上传到网站根目录,实现二级域名的转发,并禁止人访问以前的html页面,因为相同的内容可能会造成被K的杯具。
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]
#使用了二级域名,以前的htm文件就不要让人访问了
order allow,deny
deny from all
接下来做程序的修改。这得分2种情况。
- 文章不多,生成静态那可以直接用rewrite实现
- 如果文章很多,那可以使用伪静态来实现,这很简单;但如果想生成静态文件,那得做一点伤筋动骨的事情。
额,手痛,写了一天代码,才发现坚持写博也是一件考验人的事情。
程序修改涉及到channelunit.func.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']}/";
}
将栏目和文章的地址替换以后,功能基本上完成。接下来的工作是给文章分页做处理,结果发现这个效果实现起来真是挺难,技术不到位,只能先安于现状,等待更新。
以文章页 view.php 为例
最后一句是 $arc->Display();
是不是和smarty模板引擎看起来很像?
其实$arc->Display(); 就是 echo($arc->Get());
在echo前一句正则替换,想干啥就干啥…… 管他静态还是伪静态