如何设置伪静态?

伪静态是SEO策略的一种,之所以要伪静态是因为搜索引擎的动态地址收录和排名都逊于静态地址。通俗的说把动态地址(xxx.php?xxx=xxx)伪装成静态地址(xxx.htm),这就是伪静态。

具体如何“伪”,需要用到一个rewrite技术(中文叫重写)。主流WEB服务器都支持rewrite技术(IIS本身不支持,但可以通过第三方组件支持),下面依次说明:

·其中Apache httpd(俗称的apache)支持的最好也是最流行的。不但支持系统管理员通过配置文件修改(高性能),还支持虚拟主机用户通过站点目录下的文件(默认是.htaccess)动态修改。

·nginx性能最好的,但是它对虚拟主机市场的需求一直重视不够,只支持系统管理员修改。这也是为什么它性能好但是商业虚拟主机很少有nginx的。(广告:AKCMS官方主机率先支持nginx虚拟主机的自助伪静态,通过控制面板可视化界面自助设置rewrite,语法兼容Apache的.htaccess,点击了解AKCMS官方主机:http://idc.akhtm.com/

·IIS是其中最麻烦的,它本身不支持伪静态,通过安装第三方组件ISAPI_REWRITE使用筛选器机制可以支持(默认配置文件是:httpd.ini)。但这个组件是收费的,而且它有两个版本2和3,而且互不兼容。所以每次调试IIS的伪静态都特别麻烦。

了解了主流的rewrite技术再继续回到AKCMS。AKCMS安装成功后会在站点根目录生成一系列以akcms_为前缀的文件,这些文件就是用于动态访问的接口(伪静态实际上也是动态访问)。和rewrite有关的是以下3个文件:

akcms_item.php(用于内容页的访问,通过文章ID字段,可以伪成/news/123456.html这样的静态地址,性能较高)
akcms_rounter.php(用于内容页的访问,通过文件名字段,可以伪成/sports/football.html这样复杂的静态地址,数据量大时性能稍低)
akcms_category.php(用于栏目页的访问)

下面以具体实例说明如何为博客网站系统开启伪静态

一个博客站的伪静态规则(Apache的.htaccess)如下:

RewriteEngine On
RewriteBase /

RewriteRule ^rss.xml$ akcms_item.php?id=1153 [L]
RewriteRule ^$ akcms_item.php?id=1149

RewriteRule ^([a-zA-Z0-9\-_]+)/$ akcms_category.php?path=$1 [L]
RewriteRule ^([a-zA-Z0-9\-_]+)/index\.htm$ akcms_category.php?path=$1 [L]
RewriteRule ^([a-zA-Z0-9\-_]+)/index-([0-9]+)\.htm$ akcms_category.php?path=$1&page=$2 [L]

RewriteRule ^([a-zA-Z0-9\-_\/]+\.htm)$ akcms_rounter.php?filename=$1 [L]

伪静态失败时的错误排查步骤,请参见:http://jimifan.com/manual/fake-static-troubleshoot.htm