WordPress在iis下伪静态后子目录无法访问的解决办法

2009.12.22 / 17:34 / Tags: , ,

今天换了个主机把Wordpress升级到2.9,遇到了一个小问题,不知道是Wordpress2.9做了改变还是咋地,之前在2.8上正常使用的伪静态出问题了:做伪静态之后无法访问子目录了,只要是非wp-开头的子目录(文件夹),通过http://www.anysns.com/子目录,统统是404错误…还好被我暂时解决了,具体的方法如下:

问题症状:

由于是win下的iis主机,所以只能使用isapi-rewrite组件解决伪静态的问题,之前的伪静态规则如下:

[ISAPI_Rewrite]

# 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]

之前设置的的Wordpress永久链接现在仍然可用,只是之前正常访问的子目录都无法访问了:被重定向到404。

解决办法:

我的解决办法是给子目录单独设置一条规则:

如为名为sub的子目录设置一条规则:

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

上面的意思访问子目录sub都转到sub子目录,也就是访问http://anysns.com/sub时就转到空间根目录下的sub文件夹;
如果你有多个子目录的话,可以多设置几条

写在最后:

上面的办法只是治标不治标的,我想更好的办法就是在空间根目录下建一个子文件夹,将所有的要使用的子目录都放在其里面,单独对其做一条RewriteRule,具体代码我已近想好了,只是不知道能不能有效果,明天同空间商联系做下试验,有效的话我会把代码在本文更新。


  1. 阿士
    2009.12.22 / 21:41

    原来用win主机时一直找,现在不要了

  2. 黄永泉
    2009.12.22 / 21:56

    这方面不是很懂,得多向博主学习学习!

  3. 内大臣
    2009.12.22 / 23:02

    还好我不是win主机

  4. QiQiBoY
    2009.12.22 / 23:40

    我也是Linux主机滴。。

  5. 小林
    2009.12.23 / 16:53

    这个方法确实挺投机的

  6. Yusn
    2009.12.23 / 16:54

    @小林
    是的,成功了吗

  7. 小巷
    2009.12.23 / 16:58

    @Yusn
    这样可以吗?

  8. Yusn
    2009.12.23 / 17:04

    @小巷
    应该可以的吧,有问题再请教你

  9. 小巷
    2009.12.23 / 17:15

    @Yusn
    呵呵 回复的这么及时?

  10. Yusn
    2009.12.23 / 17:18

    Yes, I’m online

  11. Yusn
    2009.12.23 / 17:19

    下班回家喽

  12. 小巷
    2009.12.23 / 17:19

    @Yusn
    在博客上面聊天 太那个了吧 我也准备下班了

  13. Yusn
    2009.12.23 / 17:51

    @小巷
    我到家啦,哈哈

  14. 飞翔在线
    2009.12.23 / 18:35

    @Yusn
    我也online,呵呵

  15. Yusn
    2009.12.23 / 20:04

    @小林
    你是哪个小林?

  16. 老衲
    2009.12.23 / 20:12

    老衲也来test一下啊

  17. Yusn
    2009.12.23 / 20:14

    @老衲
    阿弥陀佛,呵呵

  18. Socco
    2009.12.24 / 01:05

    Come On Socco

  19. 风景
    2010.03.31 / 10:47

    不行哦 我的是wp最新版本的
    按照你所说的方法设置了还是不行,头大袄

  20. Yusn
    2010.03.31 / 11:05

    @风景
    请先确认你的情况跟我的差不多吗,我是win主机,安装了伪静态插件,要将http.ini放置到空间主机上面,而不是在你的网站空间根目录,要放置的话请先联系你的主机商

  21. 风景
    2010.03.31 / 11:14

    要将httpd.ini放置到空间主机上面
    就这点不同哦
    但是空间商是已经启用了 rewrite组件了的,httpd.ini我上传到我虚拟主机的根目录下已经静态化成功了,但是就是因为我在空间二级目录下安装了sns软件ucenter home ,现在没办法进去,就是想解决这么一个问题,
    如果单独wordpress静态化,事实上已经成功了的哦

  22. Yusn
    2010.03.31 / 11:21

    @风景
    这个不简单吗:比如你的子目录是sns,只要再添加一条下面的记录就OK了

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

  23. 风景
    2010.03.31 / 11:36

    感谢Yusn 兄,已经成功就是二级目录必须加/才能访问成功,非常感谢
    博客正在测试完善中,还没开放 ,呵呵

  24. Yusn
    2010.03.31 / 12:19

    @风景
    呵呵,太客气啦,常联系哦!