hack逻辑:URL中含有非ASCII字符的文章,是不能被boost静态化化的,要还原成node/$id 这样的形式。
前言:站点描述
这是一个drupal写的采集站,同内容不同域名几个站每天正在为我创汇5美金,由于是采集,所以必然会采到一些不一定理想的内容。
我的初衷是都采英文,但这个站让我郁闷的是采了些俄文的内容,为了SEO,又不好删。
2.我的drupal环境,BOOST模块装上了,其余的没什么特别
3.站点是放在3.95美元/月的bluehost上的,上面还有5个drupal站和本wordpress站,文章量大约是10万吧。所以我做的每一步都必须考虑到性能,否则说不定bluehost明天就会停止我的服务器了(已经被band过一次了所以才天天考虑性能优化,有钱就换!)。
性能方面:
1.在bluehost上用drupal得有觉悟,必须要静态化,SEO是要装pathauto的
2.非ASCII的URL是不能被boost静态化的(只在国外服务器是如此,国内服务器是支持的)
3.所以,目的很简单,URL中含有非ASCII字符的文章,不能被静态化,这时要将URL还原成原drupal URL, 即从http://oddsfun.com/content/非ASCII 还原为 http://oddsfun.com/node/xxxx
注意了,这不是多此一举,因为我的文章还是以英文为主的
这样还原后,就使得所有文章都会有静态化了,否则每次请求到这些文章,那服务器的消耗真是!
代码:
include/common.inc 1494行(drupal6 , drupal7估计也是差不多)
elseif (!empty($path) && !$options['alias']) {
/*hack
$path = drupal_get_path_alias($path, isset($options['language']) ? $options['language']->language : ”);
*/
$temppath = drupal_get_path_alias($path, isset($options['language']) ? $options['language']->language : ”);
if (!preg_match(‘@[^/a-z0-9_\-&=,\.:\s]@i’, $temppath)) {
$path = $temppath;
}
}
最终的结果可以看