伪静态失败的问题排查步骤

伪静态对普通站长来说是一个“高科技”的活,常常遇到某个伪静态怎么调也调不好。下面就我个人的经验说说伪静态的问题排查步骤:

1 确定是否支持自定义伪静态

Apache的.htaccess、IIS的httpd.ini不是所有服务器都支持的。最简单的办法就是上传一个同名文件(以.htaccess为例),内容随便写点东西,这样的文件肯定不符合语法,上传上去,如果网站挂了,就说明服务器支持伪静态(其实是支持通过.htaccess修改站点设置),删除这个测试文件;如果没有反应,则说明服务器不支持伪静态,省下的步骤都省掉了。

网站挂了常常表现为:“内部服务器错误”、“500错误”等等。

2 直接动态访问能正常访问吗?

如果一个伪静态指向一个动态地址,就直接打开这个预期中的动态地址,如果能打开,说明确实是设置有误;如果也打不开,说明和伪静态无关,可能是程序设置错误或者模板配置错误等。

3 是否被前面的规则干扰?

内容丰富的网站常常有多个伪静态规则,如果设置不当容易互相干扰。一个原则就是越精确的规则越放在前面;越含糊的规则越放在后面。

比如:RewriteRule ^([a-zA-Z0-9\-_\/]+\.htm)$ akcms_rounter.php?filename=$1 [L]就很含糊,适配一切htm结尾的地址,它就应该放在最后。如果它放在前面,则后面的规则就会它拦了。

4 URL中的特殊字符

以nginx为例,如果伪静态规则中含有{}(大括号),则需要在前后加上""(双引号),否则大括号会被认为是规则的分隔符而报错。