在godaddy主机(Linux系统)上部署了wordpress程序,安装了cos-html-cache生成静态首页与静态文章页,然而只有首页可以静态化,文章页无法生成。
造成该问题的原因是Godaddy的主机太安全的缘故,首先来看下如下变量与函数的差别:
$_SERVER['DOCUMENT_ROOT']变量:返回服务器中定义的当前脚本所在的文档根目录
dirname(__FILE__) 函数:返回的当前脚本的绝对路径
而cos-html-cache中采用了$_SERVER['DOCUMENT_ROOT']变量来获取网站目录却在Godaddy这类BT主机商遭遇了问题——测试生成首页无法生成静态文章页。
解决方法比较简单,将以下内容保存为get_path.php文件放到网站根目录上:
echo "SeverPath: ".dirname(__FILE__)."/";
echo "
";
$path = $_SERVER['DOCUMENT_ROOT']."/";
echo "DOCUMENT_ROOT: ".$path;
?>
访问这个文件获取到的信息如下:
SeverPath: /home/content/is36/html/www.is36.com/
DOCUMENT_ROOT: /var/chroot/home/content/is36/html/
是否看到差别了?进入WordPress后台,打开如下链接(自行修改域名):
http://www.is36.com/wp-admin/plugin-editor.php?file=cos-html-cache/cos-html-cache.php
然后把$path = $_SERVER['DOCUMENT_ROOT']."/";修改为$path = "/home/content/is36/html/www.is36.com/";
修改完成后点击更新文件,然后再用另外一个未登陆WordPress的浏览器访问首页跟文章页,你会发现都更新了!(注意:登陆的时候页面不会被缓存,或者退出登陆访问页面。)
吐槽:Godaddy主机无法在主机面板里调整默认文档页的先后顺序,经测试发现index.php文件的优先级高于index.html,如果生成的静态页index.html无法被先访问就失去了静态化的意义。那么针对Godaddy主机这个不算问题的问题,解决方案也简单。把以下规则加入到根目录的.htaccess文件里:
deny from all
DirectoryIndex index.html index.php
order deny,allow