2019 六月 19 , 星期三
Home / 系统环境 / windows / wordpress在windows2003 iis6的环境下伪静态化超级完美终极方案

wordpress在windows2003 iis6的环境下伪静态化超级完美终极方案

wordpress在windows环境下静态化是一个老大难的问题,目前网上流行的有几种方法,有用404(缺陷是搜索结果页)还有用 httpd.ini (标签页分页错误)写规则,还有用WordPress URL Rewrite组件(中文标签页支持不完美),但都不是很完美。鸟亭综合了以上各种方法,穿插应用,最终形成比较完善的终极方案。

本文以windows2003 iis6为实验环境,当然本文也适用于windows2008,iis7等环境。

第一步、下载WordPress URL Rewrite组件

下载地址:WordPress URL Rewrite 

WordPress URL Rewrite主要功能与特色:完全无需人工干预,全自动重写URL,只需要在后台设置好固定链接(Permalinks)形式,就能直接使用,就像 linux下用.htaccess一样。可以使用在一级目录和子目录,也可以排除不需要重写的目录。这个非常方便,对于某些目录不需要URL重写的就将其 排除,不会造成无法访问。因为全自动,所以免去了在写重写规则时候遇到的规则重复造成部分目录和文件无法实现的情况。我想,很多站长都遇到过这种情况吧, 当然我也有过,那个叫折腾来着。

第二步、安装WordPress URL Rewrite

把下载的压缩包解压到任何地方,只要保证WordPressURLRewrite.ini和WordPressURLRewrite32.dll(32位版本,64位版本对应为64.dll)在同一文件夹下就可以了。
然后打开WordPressURLRewrite.ini设置你的博客目录,以及需要排除的目录(如果wordpress安装在空间的根目录,不需要设置,保持默认就行了,如果是二级目前就需要设置一下),如下,代码第一行默认根目前,如果是二级目录123baobao,第二行变成/123baobao/即可。第三行开始是排除静态化的目前,可以自定义)

1
2
3
4
5
6
7
8
#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 不能分页 设置的某些静态页也不能访问 所以下面才是本文的重点:

(一)、设置 IIS Rewrite

具体操作方案见

《为wordpress安装IIS Rewrite 组件与配置方法》

安装完成之后在Rewrite 相关文件夹里找到httpd.ini 用文本文件打开添加以下规则

1
RewriteRule /([0-9]+).html /index\.php\?p=$1 [I]

这样本站设置的固定链接/%post_id.html就可以正常访问了

(二)、修改wp-include中的class-wp.php

wodpress 3.42文件是class-wp.php 之前的版本可能是classes.php

具体修改方法是

原代码

1
$pathinfo = $_SERVER['PATH_INFO'];

替换为

1
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");

原代码

1
$req_uri = $_SERVER['REQUEST_URI'];

替换为

1
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");

下面是常见的几种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下伪静态化的问题,但是之前的动态页面还能打开,搜索引擎有可能还会收录之前的动态页面,这样就导致了一个重复收录的问题

Check Also

windows上mrtg监控linuxcpu 内存

windows上安装mrtg来 ...

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>