2009-02-23

IIS 下实现 WordPress 伪静态

14+

在 IIS 下使用 WordPress ,最闹心的事莫过于对 WP 固定链接的伪静态设置。网上有很多基于 ISAPI_Rewrite 的 URL 重写规则,大部分都不是太好用,这里推荐两款适用于 IIS 环境下的 WP URL 重写组件,供有独立主机的朋友轻松配置 WordPress 伪静态。

  1. wp_url_rewriting:URL Rewriting for WordPress under IIS
  2. WordPress URL Rewrite

这两款 URL 重写组件使用都非常的简单,只需要解压后,打开 IIS 信息服务管理器,在你的 WordPress 站点属性中添加 ISAPI 筛选器,加载解压的 wp-url-rewriting.dll 或 WordPressURLRewrite32.dll ,然后重启 IIS 即可。然后到 WP 管理后台设置固定链接形式就好。

其中,WordPress URL Rewrite 可以打开 WordPressURLRewrite.ini 设置 WP 博客目录,比如 /blog 等,还可以排除不需要重写的目录。对于某些目录不需要URL重写的就将其排除,不会造成无法访问,比如 /wp-admin 等,Readme.txt里有详细说明。

WordPress URL Rewrite 分 32/64 位, 使用时选择适合自己的版本,还要注意给 dll 所在的目录加上 IIS_WPG 组的权限,如果服务器没有安装 MS VC++ 2008 Redistributable 需要运行文件夹中的 vcredist_x86.exe 来安装,否则在 ISAPI 筛选器中看到的始终是向下的红箭头状态,不可用。

备注:如果箭头红色并且向下,尝试检查组件文件夹的权限,重启一下站点就能箭头变成绿色并且向上。

另:这两款组件都不支持 .html 后缀的 URL 重写,只能以目录形式组成,比如你的固定链接使用的是 /%postname%.html 就需要改成 /%postname%/ ,希望更新版本能解决这个问题。

由于组件是外国人的,所以不支持中文的 tags ,所以,为了兼容中文的 tags ,还需要多加载 ISAPI_Rewrite 组件并配置规则 httpd.ini 来实现:

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteRule /tag/(.*)/ /index\.php\?tag=$1

这样就能支持任意字符的 tags 了,完美解决 WordPress 的 URL 重写问题。

注意 / 问题,规则正则结尾带 / ,设置固定链接时使用 /%postname%/ ,最后面要加 / 。

除此之外,用过 Discuz! 论坛的朋友都知道 Discuz!提供有 Rewrite 组件,配置方法和效果与 ISAPI_Rewrite 相同。

本文有 14 篇评论 ↓↓

  1. 请问要在iis排除要让某条规格不起作用怎么处理啊?如我不是目录admin也被rewrite怎么写呢?

  2. "这两款组件都不支持 .html 后缀的 URL 重写",可惜啊,在你这里才找到原因,实在不易,感谢!!

  3. 请问虚拟主机也是这么设置吗?刚使用wp,伪静态不知怎么搞?

  4. 这两款组件都不支持 .html 后缀的 URL 重写

  5. 要支持 .html 后缀的 URL 重写 就更好了

  6. 还可以排除不需要重写的目录

  7. 很好用

  8. 谢谢提供。。。。。

  9. 正需要呢 希望好用

  10. 不错 不错 试试

  11. 嗯嗯。学习了!真的不能是.html ?

  12. 很多都是不能去掉index.php 不知道这个怎么样?

  13. 给力,测试通过,好用,只是不能html有点遗憾。
    Typecho好是好就是什么东东都要自己装很麻烦。

  14. 受教。