Win2003+IIS6环境下艰难配置成功WordPress伪静态Permalink

需求:要在安装了wordpress的站点实现伪静态功能,服务器环境是Win2003+IIS6
在Win主机下,Wordpress后台的Permalink都给加上了难看的index.php前缀,比如原本应该是
http://www.***.com/contact/ 页面变成了
http://www.***.com/index.php/contact/ 这样的URL
这不单使网站的URL变得难看,更影响了SEO,是难以容忍的。于是打算动手去掉这个前缀
这个问题折磨了我整整一天,网上搜了N种方法,踩了N个坑,总算解决。有必要整理一下过程。

网上搜到的所有方法,大致就这两种思路
1. 采用ISAPI_Rewirte服务配合httpd.ini文件
这是我首先考虑的方法,原因是httpd.ini文件只是一个文本,可以随意修改策略,看起来比较容易,而且自由度也高。找到一篇感觉不错的教程(http://www.jannn.com/974.html),于是开始实行。
首先下载了别人写好的针对Wordpress常用的httpd.ini,放到网站根目录下;然后远程登录服务器,安装了ISAPI_Rewirte服务,在站点的ISAPI筛选器里添加了Rewrite3这个筛选器,重启了IIS服务,一切看似都很顺利。
接下来在Wordpress后台设置好伪静态,我习惯设置成这样:
Win2003+IIS6环境下艰难配置成功wordpress伪静态(Permalink)跳转

然后满怀希望的打开网站,点击发布的文章,浏览器还是给出了404页面…
反复读教程,感觉没有漏掉哪一步啊!只能继续百度+谷歌…
看了N个网页,感觉最有可能问题出在权限上,Rewrite的服务对我的httpd.ini没有读取权限?
httpd.ini需要IIS_WPG用户组的访问权限,于是再次远程登录服务器,准备添加IIS_WPG。结果发现我的服务器上根本没有这个用户…

于是再兜兜转转,终于在这篇文章http://blog.csdn.net/pvfhv/article/details/6145842 的帮助下解决了问题。
原来我使用的Rewrite服务是个试用版,只能把httpd.ini文件的内容复制到组件的安装目录下的httpd.conf文件内,并且开启everyone的读取权限,然后重启IIS才有效。

2014年4月24日再次踩坑:
必须在IIS的网站全局的ISAPI筛选器中删除Rewrite,单独为每个需要实现伪静态的网站添加这个筛选器,否则会影响到服务器上所有网站的URL。

2. 用404实现伪静态
这个方法是我的第二选择,是第一种方法失败N次中尝试的。教程:http://seosir.cc/404.html
我担心通过404页面做跳转,会影响页面的SEO效果,因为搜索引擎对于404是不做收录的。用这个站长工具- http://tool.chinaz.com/pagestatus/
可以检验效果。不过不管返回的是404还是200,如果能跳转成功,我不妨先试一下,然后再考虑SEO问题。
于是认真跟着教程做了一遍。结果还是不能跳转成功。
但发现如果我用静态html文件做404,是可以看得到的,一旦换成php就不行了。冷静下来再想想,再百度一下… 在无数篇排错的文章中我终于找到了答案。原来在IIS站点定义404属性的时候,必须用URL方式。如果用文件位置定义,静态的html可以,但脚本如php就不行了,正确的定义应该是针对站点根目录的URL,这样脚本就能正确执行,如图:
Win2003+IIS6环境下艰难配置成功wordpress伪静态(Permalink)跳转

这个定义完成后,Wordpress站点伪静态跳转也成功了!用站长工具测试下,所有存在页面的跳转都显示200,不存在的页面都是404,一切正常,松了一口气。

本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.brain1981.com/27.html。百度不可信,搜索请谨慎。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以获取本文的最新版本。

关注我们的微信公众号-JennyStudio 本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。

3 关于 “Win2003+IIS6环境下艰难配置成功WordPress伪静态Permalink” 的评论

发表评论

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