wordpress在IIS下伪静态后子目录无法访问的解决方法

众所周知,wordpress是基于php开发,在apache服务下运行是最优秀的。但是,国内仍然有很多主机上不能提供apache服务器,大多都是IIS环境。因此,导致wp在IIS环境下,出现很多问题,解决起来也比较麻烦。UISEO优化网也不小心使用了IIS。因此,在遇到的关于IIS环境造成的一系列问题,记录下来,帮助有同样痛苦的网站站长共同分享。

本篇主要是关于IIS伪静态成功后造成的子目录和其他一些根目录的文件不能正常访问的问题。

近几日想给博客加上一些别的页面,自然要用到子目录。没想到访问所有非WP-开头的子目录内容都转到404页面去了。看样子WP还真有的高深莫测,令我丈二和尚摸不着头脑啊,后找了不少资料才基本解决此问题,方法是修改伪静态规则文件httpd.ini:

下载或者在线编辑httpd.ini文件,在原来规则中增加一条代码RewriteRule /tool/(.*) /tool/$1 [L],增加后完整规则如下(/tool/是二级目录名,具体名称是什么就写什么,注意是双斜杠):

编辑httpd.ini规则:

[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 /favicon.ico /favicon.ico [L]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /sitemap_baidu.xml /sitemap_baidu.xml [L]
RewriteRule /sitemap.html /sitemap.html [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]

上面的内容是配置伪静态,以下是设置子目录访问配置代码 

如果需要某个子目录(比如UISEO优化网需要增加pr子目录),则在# Rules to ensure that normal content gets through行下增加如下内容:

RewriteRule /pr/(.*) /pr/$1 [L]

如果有多个子目录的话,也是可以的,设置几条这样的规则就行了。如:

RewriteRule /文件夹名1/(.*) /文件夹名1/$1 [L]
RewriteRule /文件夹名2/(.*) /文件夹名2/$1 [L]
RewriteRule /文件夹名3/(.*) /文件夹名3/$1 [L]

就这样,基本上可以解决此问题。或许还有更好的方法,继续摸索中……也欢迎大家共享。

如果是想访问根目录下的其他文件,比如验证文件html。则参考

RewriteRule /sitemap.xml /sitemap.xml [L]

只需将相应名称换成要访问的即可。

对于具体的语法,想更深入了解的,可以百度。随时为大家无私奉献!

标签

发表评论