wordpress在windows、iis6的伪静态化完美方案
1、下载WordPress URL Rewrite组件
WordPress URL Rewrite主要功能与特色:完全无需人工干预,全自动重写URL,只需要在后台设置好固定链接(Permalinks)形式,就能直接使用,就像linux下用.htaccess一样。可以使用在一级目录和子目录,也可以排除不需要重写的目录。这个非常方便,对于某些目录不需要URL重写的就将其排除,不会造成无法访问。因为全自动,所以免去了在写重写规则时候遇到的规则重复造成部分目录和文件无法实现的情况。我想,很多站长都遇到过这种情况吧,当然我也有过,那个叫折腾来着。
2、安装WordPress URL Rewrite
把下载的压缩包解压到任何地方,只要保证WordPressURLRewrite.ini和WordPressURLRewrite32.dll(32位版本,64位版本对应为64.dll)在同一文件夹下就可以了。
然后打开WordPressURLRewrite.ini设置你的博客目录,以及需要排除的目录(如果wordpress安装在空间的根目录,不需要设置,保持默认就行了,如果是二级目前就需要设置一下),如下,代码第一行默认根目前,如果是二级目录123baobao,第二行变成/123baobao/即可。第三行开始是排除静态化的目前,可以自定义)
#Paths to Rewrite (not case sensitive)
/
#Path Exceptions (not case sensitive)
/wp-admin
/wp%2dadmin
/wp-content
/wp%2dcontent
/Forum
接下来,在IIS中选择相应的站点,在ISAPI筛选器中加载WordPressURLRewrite32.dll就可以了,加载完不用重启IIS,可以停掉网站再启动。
注意:要给dll所在的目录加上IIS_WPG组的写入权限,否则无法加载对应dll文件。(方法在组件所在文件夹中点右键 属性 安全 添加 选择用户和组 输入“IIS_WPG” 检查名称 确定)
如果你的文章、栏目、tag别名均是用的英文的话,那到这里就OK了,下面是针对特殊情况的解决办法。当然国人大多是有中文标签的,所以就是中文tags 不能分页 设置的某些静态页也不能访问 所以下面才是本文的重点:
3、(一)、设置 IIS Rewrite
具体操作方案见
《为wordpress安装IIS Rewrite 组件与配置方法》
安装完成之后在Rewrite 相关文件夹里找到httpd.ini 用文本文件打开添加以下规则
RewriteRule /([0-9]+).html /index\.php\?p=$1 [I]
这样本站设置的固定链接/%post_id.html就可以正常访问了
4、修改wp-include中的class-wp.php
wodpress 3.42文件是class-wp.php 之前的版本可能是classes.php
具体修改方法是
原代码
$pathinfo=$_SERVER['PATH_INFO'];
替换为
$pathinfo=mb_convert_encoding($_SERVER['PATH_INFO'],"UTF-8","GBK");
原代码
$req_uri=$_SERVER['REQUEST_URI'];
替换为
$req_uri=mb_convert_encoding($_SERVER['REQUEST_URI'],"UTF-8","GBK");
5、下面是常见的几种WordPress固定链接格式
/%post_id%.html
/%postname%/
/%year%/%monthnum%/%postname%/
/post/%post_id%.html
/%year%/%monthnum%/%day%/%postname%/
/%year%/%monthnum%/%day%/%postname%.html
本站采用的就是
/%post_id%.html
后记:此种方案是比较完美的解决了wordpress在win下伪静态化的问题,但是之前的动态页面还能打开,搜索引擎有可能还会收录之前的动态页面,这样就导致了一个重复收录的问题,亲爱的元芳,你怎么看呢?