美工学习 发表于 2023-11-30 21:34:12

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后台设置好伪静态,我习惯设置成这样:然后满怀希望的打开网站,点击发布的文章,浏览器还是给出了404页面…
反复读教程,感觉没有漏掉哪一步啊!只能继续百度+谷歌…
看了N个网页,感觉最有可能问题出在权限上,Rewrite的服务对我的httpd.ini没有读取权限?
httpd.ini需要IIS_WPG用户组的访问权限,于是再次远程登录服务器,准备添加IIS_WPG。结果发现我的服务器上根本没有这个用户…找了很多的解决方法,终于在这篇文章http://www.daoqin.net/thread-7100-1-1.html 的帮助下解决了问题。原来我使用的Rewrite服务是个试用版,只能把httpd.ini文件的内容复制到组件的安装目录下的httpd.conf文件内,并且开启everyone的读取权限,然后重启IIS才有效。2014年4月24日再次踩坑:
必须在IIS的网站全局的ISAPI筛选器中删除Rewrite,单独为每个需要实现伪静态的网站添加这个筛选器,否则会影响到服务器上所有网站的URL。2. 用404实现伪静态
这个方法是我的第二选择,是第一种方法失败N次中尝试的。
我担心通过404页面做跳转,会影响页面的SEO效果,因为搜索引擎对于404是不做收录的。用这个站长工具- http://tool.chinaz.com/pagestatus/
可以检验效果。不过不管返回的是404还是200,如果能跳转成功,我不妨先试一下,然后再考虑SEO问题。
于是认真跟着教程做了一遍。结果还是不能跳转成功。
但发现如果我用静态html文件做404,是可以看得到的,一旦换成php就不行了。冷静下来再想想,再百度一下… 在无数篇排错的文章中我终于找到了答案。原来在IIS站点定义404属性的时候,必须用URL方式。如果用文件位置定义,静态的html可以,但脚本如php就不行了,正确的定义应该是针对站点根目录的URL,这样脚本就能正确执行,如图:这个定义完成后,Wordpress站点伪静态跳转也成功了!用站长工具测试下,所有存在页面的跳转都显示200,不存在的页面都是404,一切正常,松了一口气。




页: [1]
查看完整版本: Win2003+IIS6环境下配置WordPress伪静态Permalink