解决wordpress ISAPI网页静态化
最近使用wordpress建立了这个八喜博客,首先国外的程序环境要求和国内的好多差异,
采用ISAPI_Rewrite后怎么也无法静态化,静态化成功后网址中必须带有index.php,本来无法去掉也无所谓;当文章翻页的时候发现了问题,主页的分页到第二页第三页....都无法打开,原因是地址中竟然多了一个index.php(例如:index.php/index.php/pag这样了,url完全错误了),许多人说环境问题,无奈下开始考虑重新来考虑静态问题,分析思路采用Discuz论坛哪种伪静态方式比较不错,那么为什么discuz可以,却在wordpress不可以呢,功夫不负有新人,昨天晚上调试成功了,和大家分享一下。
首先你的服务器加载了ISAPI_Rewrite,Discuz如果您正在使用伪静态,那么就不要考虑再次加载了,在wordpress官方许多人提出了需要单独加载专用的Rewrite,其实不需要,在国内的文章copy太严重了,找了一天,发现重复的起码有9.6成都同出一辄,没有一点正确性,不能使用,无奈之下去国外搜索到后,建立了httpd.ini,网站成功完成了静态,永久链接规则也可以自行随意根据喜好设置,这是国内那些描述中还没有做到的,本站就是采用的这个规则,在永久链接内也可以随意修改自己的喜好网址样式,同样seo目的也达到了,如果您在使用wordpress的时候还在被前边描述的问题困扰,那么赶快行动吧。
备注:
1、在你使用ISAPI_Rewrite后,无需再使用cos-html-cache静态生成插件,因为没有这个必要了。
2、ISAPI_Rewrite国外网址:http://www.basilv.com/psd/blog/2006/running-wordpress-20-under-iis
规则如下:
[ISAPI_Rewrite]
# Defend your computer from some worm attacks
#RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteRule /software-files/(.*) /software-files/$1 [L]
RewriteRule /images/(.*) /images/$1 [L]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]
安装说明:
1. 将Rewrite.dll拷贝到c:\Rewrite.dll(也可以拷贝到C:\WINDOWS目录内,位置根据喜好可以自由放置);
2. 在IIS的Isapi上添加这个筛选器, 筛选器名称Rewrite,可执行文件选择Rewrite.dll;
3. 重新启动IIS,成功后会有如下显示:

4. httpd.ini 是配置文件,如果您了解Rewrite 规则,可以直接对其进行编辑;
5. 默认规则为wordpress专用,其他PHP程序伪静态无法使用;
备注:在前三项成功完成后,将httpd.ini传送到网站跟目录就完成了伪静态环境搭建,下边开始进入后台,设置永久链接采用自定义方式,代码可以参考官方:http://codex.wordpress.org/Using_Permalinks,设置您喜欢的显示方式即可[例子:/%category%/%postname%.html 含义是按照分类目录名称/内容页名称.html方式,增加html就是大家喜欢看到的静态标识 ]伪静态就这样建立完成了;
附件下载
2008.10.27日更新(以上代码已更新,复制即可使用):
增加了对Google网站sitemap.xml的支持;
RewriteRule /sitemap.xml /sitemap.xml [L]
更新后Google网站管理员工具检测结果分享:

- 2008年10月25号
- 网络记事
- 加入收藏









下载ISAPI_Rewrite,然后在IIS站点的ISAPI筛选器中添加ISAPI Rewrite的dll即可,加载后需要重新启动iis,这些操作完毕后,建立一个文件文件,将我提供的规则复制上,然后将文本文件修改为httpd.ini,上传到wordpress根目录,这样就完成了伪静态设置,永久链接的采用方式可以根据自己的喜好来完成。
看了一头雾水,具体怎么实行还是不知道。
谢谢提供这么好的规则,成功使用。
XD,按你的说明根本就搞不定
现在用的就是这个规则,怎么能说无法搞定呢?
没有这么夸张吧,也是努力做好呀.
不知道为什么,用了之后打开页面都不显示内容(并非空白,就是不显示日至内容,其他header, sidebar都显示正常)
支持,终于搞定了。谢谢。
感谢八喜提供好规则,确实帮到了我。当时忘记注明转载和使用引用通告,请谅解。
尽善尽美是我们大家共同的追求
多谢先生,按照你的方法终于成功了,呵呵。。
请教,已安装了DZ的静态化再安装这个会不会有冲突或者其他不良反映呢?
不会影响Discuz论坛使用静态,不过第123步可以去掉了,直接把文件放在WordPress就可以了;
博主 你好 找了N久终于找到这个了 很有用
不过我在使用过程中出现个问题 可能是http.ini需要修改下
就是我手动放在网站根目录下一个目录比如test里面有个index.html文件
我现在通过网站访问这个页面就会访问站点主页
------>会出现主页
麻烦帮忙再修改一下这个文件好吗 十分感谢 盼到我的博客回复下 谢谢
增加一行:RewriteRule /test/(.*) /test/$1 [L]
效仿里边的规则就可以了;
八喜 我又来了
再麻烦问下301如何定向啊
就是访问domain.com 转向www.domain.com
试了下面的规则不管用.....
RewriteCond %{HTTP:Host} ^domain\.com
RewriteRule (.*) http\://www\.domain\.com$1 [NC,R=301]
这样还需要转向吗?
301转向与重写规则没有什么关系;
可是我在linux上的博客 就是通过写.htaccess 完成的301转向的啊
我想rewrite也应该可以啊
两个不同的平台,301转向运行方式不同,按照你所描述,不使用www或者使用www,我的没有发现问题呀;
博主,按你说的方法安装上了,我自定义规则是/%category%/%postname% 这样做完,内容页面全部实现了伪静态请查看http://www.damengeye.cn/paobuji/hello-world,然而分类页全出现这个问题Sorry, no posts matched your criteria.
请查看http://www.damengeye.cn/about 我的环境是Win2003+IIS6.0,请帮忙解决一下,非常感激
我的分类页正常呀,并且其他朋友使用了也正常,你自定义的规则与伪静态不匹配导致的;
我用的就是你给的规则啊,帮忙看下,怎么解决,谢谢
你最好看看分类与自定义目录的名称,注意永久链接自定义是不是:
/%category%/%postname%.html
不行 还是要加上/index.php/ 2003+iis6
静态页面生效了 但是要手工加上 /index.php才能访问
永久链接自定义是 /%postname%.html
blog.com/aaaaaaaa.html 无法找到此页
手工加上index.php后显示正常
blog.com/index.php/aaaaaaaaaa.html 这样就正常了
用的是2.7版本
。汗。。找了好久的。。先谢谢主人。但还有个问题。用了之后,分类目录的链接出现了问题。点击某个目录后进入的是空白页面= =。。麻烦主人能告诉我怎么修改httpd.ini里的内容才能解决么= =。。。谢谢了
仿照这一句【RewriteRule /images/(.*) /images/$1 [L]】增加一条你的就可以了
呃= =怎么改这句然后加上?我完全不懂的说额= =。
然后昨天后来发现英文分类就可以,简体中文的也可以,繁体中文就不行了。。然后别名就全改成了英文。
但是后来在检查TAG时又发现所有中文TAG(包括简体和繁体)全部NOT FOUND。。。麻烦主人了= =帮下我这个初做自家博客的人吧。。
繁体中文没有测试,简体中文没有问题,我现在也用着,此规则应该适用于所有语言,TAG中文不可以,需要修改代码,wordpress官方论坛有修改方法;
看不太懂啊,有Q吗,能否咨询
您好楼主,我按照您的方法已经实现了,但是我想把WP放在网站的/blog这个目录里面,也就是WP的访问网址是www.xxx.com/blog这样的形式,请问改怎么修改,谢谢了~!
httpd.ini这个文件应该放在哪里,里面的规则该怎么改?
博主你好,我转载了你的文章,也添加了一些内容,请过目http://www.xuedong.net/post/984.html
非常感谢博主~ 方法很好,非常能用
我一开始是IDC的网管帮我搞的没成功,刚才我自己上传了一个httpd.ini文件到网站的根目录,现在已经OK了,多谢博主的分享 !太感谢啦
httpd.ini 在IIS配置下的win2003
PHP环境,放在哪里呀?
放在网站根目录
真麻烦!
请问,httpd.ini里可以添加301重定向规则吗?
有一个很严重的问题:
有的时候需要验证网站,上传指定的html或者txt文件到网站根目录,但是上传后还是打不开,比喻说www.free07.net/123.txt,提示404错误,但是文件确实已经上传了!
请问是什么原因,谢谢!
想弄个301真的很麻烦
系统是win2003,上面已经配置了rewrite 默认规则是Discuz!论坛 ,wordpress博客放在根目录,看了此教程省略了前三步,直接复制代码后命名为httpd.in后静态成功,可是二级目录的discuz论坛打不开了,麻烦八喜师傅给看看,或者麻烦你留下QQ,我加你,谢谢,我的QQ:316472764
服务器和所购虚拟主机一样,其实绝大多数都是支持的;
我用了这个之后,不出现index.html了,但还是不成功,是不是wordpress必须放在根目录?我放在了 /blog 里面,跟这个有关系吗?
搞定,多谢!
放在wordpress根目录
我和你用的差不多,但是TXT和HMTL就无法打开了,打开就出现404,不信你试试。希望博主能找到调试的方法,谢谢
请问:我这个站,只要链接含中文,就会404,请问如果设置?谢谢
我弄好了可出现个问题· 就是中文标题的时候还是打不开网页必须是英文的才可以·