WordPress的httpd.ini说明(设置伪静态)
在非windows的主机下,使用WordPress的伪静态,不需要设置那么多东西,只要在程序后台的固定链接里写上自己想要的链接模式就行了,但windows主机下,想用WordPress的伪静态就比较麻烦。网上常用的是两种方法,一种是用404定义(这个我没用过,具体好不好不清楚,似乎不能支持放在根目录的博客,优势是不需要主机支持什么,只要能自定义404页面,但总感觉对收录之类有些影响,也有人说没事;方法请自行搜索),另一种方法就是用httpd.ini,这需要服务器支持。至于服务器方面需要什么就不在这里说了。
配置httpd.ini的优点:可以实现链接伪静态;
配置httpd.ini的缺点:不完美,主要在分类翻页失效和wap(需要装wap插件)无法静态上;原链接依然存在,即xxx.com/1.html(定义伪静态后的)和xxx.com/?p=1两个地址共存,造成收录重复。
第一个缺点当前无法解决;第二个缺点可以用robots.txt禁止收录来解决,禁止代码:
User-Agent: * Disallow: /index.php? Disallow: /?p=*
我手上一套还算完善的httpd.ind的定义:
[ISAPI_Rewrite] # Protect httpd.ini and httpd.parse.errors files # from accessing through HTTP # # 形式:/PostID.html # # 自定义链接 /%post_id%.html RewriteRule /Tags/(.*) /index.php?tag=$1 RewriteRule /(about|contact|about-copyright|favor|archives|tags|sitemap|link|help|security|%e5%85%b3%e4%ba%8e) /index.php?pagename=$1 RewriteRule /Category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?category_name=$1&feed=$2 RewriteRule /Category/?(.*) /index.php?category_name=$1 RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?author_name=$1&feed=$2 RewriteRule /author/?(.*) /index.php?author_name=$1 RewriteRule /rss.xml /wp-feed.php/?feed=rss2 RewriteRule /feed/?$ /wp-feed.php/?feed=rss2 RewriteRule /comments/feed/?$ /wp-feed.php/?feed=comments-rss2 RewriteRule /([0-9]+).html /index.php?p=$1 [I] RewriteRule /page/(.)/?s=(.) /index.php?s=$2&paged=$1 RewriteRule /page/(.*) /index.php?paged=$1 RewriteRule /date/([0-9]{4})([0-9]{1,2})([0-9]{1,2})/(1+)/?([0-9]+)?/?$ /index\.php\?year=$1&monthnum=$2&day=$3&name=$4&page=$5 RewriteRule /date/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&day=$3&page=$4 RewriteRule /date/([0-9]{4})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&page=$3 RewriteRule /([0-9]+).html/(feed|rdf|rss|rss2|atom) /index.php?feed=rss2&p=$1 RewriteRule /([0-9]+).html/trackback /wp-trackback.php?p=$1
效果是日志链接 xxx.com/1.html,页面链接为 xxx.com/about。
如果要大量使用“页面”功能的话,这里需要注意的一点是以下这行:
RewriteRule /(about|contact|about-copyright|favor|archives|tags|sitemap|link|help|security|%e5%85%b3%e4%ba%8e) /index.php?pagename=$1这是定义页面的,增加一个页面就要在这里对应增加这个页面的固定连接后缀,如about。若想加带中文的链接话,不能在这里直接写中文,而需要写中文对应的编码(点页面的“快速编辑”,在“别名”一栏可看到,复制过来即可),如里面的%e5%85%b3%e4%ba%8e。 漏了说使用方法,把其上面那整段的代码复制到记事本里,保存,然后改名为httpd.ini,传到根目录下;在wp后台设置-固定链接处选择自定义结构,填上 %post_id%.html。 补充:在windows主机下要支持httpd.ini就需要安装ISAPI Rewrite组件,当前有2和3两个版本。一般win主机选择的是2,其就会有我在上面所说的翻页问题。若用3则比较完美,但3版本不支持多站点,只能一个站点使用,所以一般idc不考虑这个,若自己的服务器可以这么弄。
- / ↩
翻页会失效?
这个,和Linux主机的.htaccess配置很类似……
我是安装在"wp"这个子目录下的,要怎么改吗?
没测试过,似乎是不可行的。依然不建议在win主机下用伪静态,其实默认链接和伪静态在搜索下没太大差别,这是实践证明的。
如果页面多加下面的那几行代码,是怎么加?直接在httpd.ini下面接着放就可以吗?望答复,到我的博客看看。
试下:
RewriteRule /(%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC|%E5%85%B3%E4%BA%8E) /index.php?pagename=$1
再唠叨下:不建议在win下弄伪静态,效果往往适得其反
按你的方法设置了,还真管用,关键是我这个主机提供商还没linux,哎,等他们的上线了就改linux主机。谢谢分享。
有效就好,没想到对3.0版本也还能用,呵呵!
我用的3.2.1,但是有的规则写的有问题了,rss不行。暂时还是没启用。
子目录怎么跳转呢
这个文件有问题,网站打不开