解决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就是大家喜欢看到的静态标识 ]伪静态就这样建立完成了
附件下载

rewrite与httpd.ini文件下载

2008.10.27日更新(以上代码已更新,复制即可使用):
增加了对Google网站sitemap.xml的支持;
RewriteRule /sitemap.xml /sitemap.xml [L]
更新后Google网站管理员工具检测结果分享:

这篇文章现在47 个评论

看了一头雾水,具体怎么实行还是不知道。

jerviswang在2008-10-25的13:12 说:

下载ISAPI_Rewrite,然后在IIS站点的ISAPI筛选器中添加ISAPI Rewrite的dll即可,加载后需要重新启动iis,这些操作完毕后,建立一个文件文件,将我提供的规则复制上,然后将文本文件修改为httpd.ini,上传到wordpress根目录,这样就完成了伪静态设置,永久链接的采用方式可以根据自己的喜好来完成。

2008-10-25 13:53 八喜 引用 1楼

看了一头雾水,具体怎么实行还是不知道。

2008-10-25 13:12 jerviswang 引用 2楼

谢谢提供这么好的规则,成功使用。

2008-10-27 00:17 xmlwtest 引用 3楼

XD,按你的说明根本就搞不定

2008-11-4 07:49 bbsqq 引用 4楼

XD,按你的说明根本就搞不定

bbsqq在2008-11-04的07:49 说:

现在用的就是这个规则,怎么能说无法搞定呢?

2008-11-4 10:19 八喜 引用 5楼

没有这么夸张吧,也是努力做好呀.

2008-11-6 23:27 八喜 引用 6楼

不知道为什么,用了之后打开页面都不显示内容(并非空白,就是不显示日至内容,其他header, sidebar都显示正常)

2008-11-23 17:52 moonswamp 引用 7楼

支持,终于搞定了。谢谢。

2008-11-23 23:29 xinry 引用 8楼

感谢八喜提供好规则,确实帮到了我。当时忘记注明转载和使用引用通告,请谅解。

2008-11-28 10:18 stbuddha 引用 9楼

尽善尽美是我们大家共同的追求

2008-11-28 10:28 8xif 引用 10楼

多谢先生,按照你的方法终于成功了,呵呵。。

2008-11-29 11:35 51blog 引用 11楼

请教,已安装了DZ的静态化再安装这个会不会有冲突或者其他不良反映呢?

2008-12-14 17:02 嘿嘿 引用 12楼

不会影响Discuz论坛使用静态,不过第123步可以去掉了,直接把文件放在WordPress就可以了;

2008-12-14 18:16 8xif 引用 13楼

博主 你好 找了N久终于找到这个了 很有用
不过我在使用过程中出现个问题 可能是http.ini需要修改下
就是我手动放在网站根目录下一个目录比如test里面有个index.html文件
我现在通过网站访问这个页面就会访问站点主页
------>会出现主页
麻烦帮忙再修改一下这个文件好吗 十分感谢 盼到我的博客回复下 谢谢

2008-12-20 20:17 阿超 引用 14楼

增加一行:RewriteRule /test/(.*) /test/$1 [L]
效仿里边的规则就可以了;

2008-12-21 00:20 8xif 引用 15楼

八喜 我又来了
再麻烦问下301如何定向啊
就是访问domain.com 转向www.domain.com
试了下面的规则不管用.....
RewriteCond %{HTTP:Host} ^domain\.com
RewriteRule (.*) http\://www\.domain\.com$1 [NC,R=301]

2008-12-22 14:33 阿超 引用 16楼

这样还需要转向吗?
301转向与重写规则没有什么关系;

2008-12-22 17:25 8xif 引用 17楼

可是我在linux上的博客 就是通过写.htaccess 完成的301转向的啊
我想rewrite也应该可以啊

2008-12-23 09:05 阿超 引用 18楼

两个不同的平台,301转向运行方式不同,按照你所描述,不使用www或者使用www,我的没有发现问题呀;

2008-12-23 12:58 8xif 引用 19楼

博主,按你说的方法安装上了,我自定义规则是/%category%/%postname% 这样做完,内容页面全部实现了伪静态请查看http://www.damengeye.cn/paobuji/hello-world,然而分类页全出现这个问题Sorry, no posts matched your criteria.
请查看http://www.damengeye.cn/about 我的环境是Win2003+IIS6.0,请帮忙解决一下,非常感激

2008-12-24 11:55 nbatop10 引用 20楼

我的分类页正常呀,并且其他朋友使用了也正常,你自定义的规则与伪静态不匹配导致的;

2008-12-24 12:19 8xif 引用 21楼

我用的就是你给的规则啊,帮忙看下,怎么解决,谢谢

2008-12-24 12:34 nbatop10 引用 22楼

你最好看看分类与自定义目录的名称,注意永久链接自定义是不是:
/%category%/%postname%.html

2008-12-24 15:54 8xif 引用 23楼

不行 还是要加上/index.php/ 2003+iis6
静态页面生效了 但是要手工加上 /index.php才能访问
永久链接自定义是 /%postname%.html
blog.com/aaaaaaaa.html 无法找到此页

手工加上index.php后显示正常
blog.com/index.php/aaaaaaaaaa.html 这样就正常了

用的是2.7版本

2009-01-8 23:51 zgj 引用 24楼

。汗。。找了好久的。。先谢谢主人。但还有个问题。用了之后,分类目录的链接出现了问题。点击某个目录后进入的是空白页面= =。。麻烦主人能告诉我怎么修改httpd.ini里的内容才能解决么= =。。。谢谢了

2009-02-15 18:52 诚恳的询问者 引用 25楼

仿照这一句【RewriteRule /images/(.*) /images/$1 [L]】增加一条你的就可以了

2009-02-16 12:31 8xif 引用 26楼

呃= =怎么改这句然后加上?我完全不懂的说额= =。
然后昨天后来发现英文分类就可以,简体中文的也可以,繁体中文就不行了。。然后别名就全改成了英文。
但是后来在检查TAG时又发现所有中文TAG(包括简体和繁体)全部NOT FOUND。。。麻烦主人了= =帮下我这个初做自家博客的人吧。。

2009-02-16 13:48 诚恳的询问者 引用 27楼

繁体中文没有测试,简体中文没有问题,我现在也用着,此规则应该适用于所有语言,TAG中文不可以,需要修改代码,wordpress官方论坛有修改方法;

2009-02-17 16:24 8xif 引用 28楼

看不太懂啊,有Q吗,能否咨询 

2009-05-27 17:46 急救超人 引用 29楼

您好楼主,我按照您的方法已经实现了,但是我想把WP放在网站的/blog这个目录里面,也就是WP的访问网址是www.xxx.com/blog这样的形式,请问改怎么修改,谢谢了~!
httpd.ini这个文件应该放在哪里,里面的规则该怎么改?

2009-05-30 18:21 kangs 引用 30楼

博主你好,我转载了你的文章,也添加了一些内容,请过目http://www.xuedong.net/post/984.html

2009-06-3 22:04 雪东博客 引用 31楼

非常感谢博主~ 方法很好,非常能用

2009-08-12 13:06 vayu 引用 32楼

我一开始是IDC的网管帮我搞的没成功,刚才我自己上传了一个httpd.ini文件到网站的根目录,现在已经OK了,多谢博主的分享 !太感谢啦

2010-02-3 19:35 乱爬网 引用 33楼

httpd.ini 在IIS配置下的win2003
PHP环境,放在哪里呀?

2010-03-12 10:54 winxml 引用 34楼

放在网站根目录

2010-03-14 21:24 8xif 引用 35楼

真麻烦!

2010-04-7 15:37 510blog 引用 36楼

请问,httpd.ini里可以添加301重定向规则吗?

2010-04-13 15:20 Terence 引用 37楼

有一个很严重的问题:
有的时候需要验证网站,上传指定的html或者txt文件到网站根目录,但是上传后还是打不开,比喻说www.free07.net/123.txt,提示404错误,但是文件确实已经上传了!
请问是什么原因,谢谢!

2010-06-2 15:51 菊花残 引用 38楼

想弄个301真的很麻烦

2010-06-2 17:49 winw 引用 39楼

系统是win2003,上面已经配置了rewrite 默认规则是Discuz!论坛 ,wordpress博客放在根目录,看了此教程省略了前三步,直接复制代码后命名为httpd.in后静态成功,可是二级目录的discuz论坛打不开了,麻烦八喜师傅给看看,或者麻烦你留下QQ,我加你,谢谢,我的QQ:316472764

2010-06-17 20:41 klyb 引用 40楼

服务器和所购虚拟主机一样,其实绝大多数都是支持的;

2010-06-29 16:42 8xif 引用 41楼

我用了这个之后,不出现index.html了,但还是不成功,是不是wordpress必须放在根目录?我放在了 /blog 里面,跟这个有关系吗?

2010-09-29 20:22 mjw83 引用 42楼

搞定,多谢!

2010-10-1 11:59 zEUS. 引用 43楼

放在wordpress根目录

2010-10-4 20:42 8xif 引用 44楼

我和你用的差不多,但是TXT和HMTL就无法打开了,打开就出现404,不信你试试。希望博主能找到调试的方法,谢谢

2010-11-30 16:48 shmily 引用 45楼

请问:我这个站,只要链接含中文,就会404,请问如果设置?谢谢

2011-04-18 22:00 way 引用 46楼

我弄好了可出现个问题· 就是中文标题的时候还是打不开网页必须是英文的才可以·

2011-04-22 13:36 蓝色 引用 47楼

*请不要发布广告、病毒连接以及违反祖国法律的言论!发表评论

打开表情 因为垃圾评论和广告评论的缘故,需要一段时间才能显示,请谅解

XHTML: 您可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>