Lisong's Blog


一月 6th, 2009

WordPress永久链接Windows/IIS下静态化去index.php方法

Learning, by 木公.

以前在用PJ时就很欣赏WP的永久链接系统,等到自己换成WP后,突然发现我的主机空间不能正常使用WP的永久链接;原因是Windows/IIS主机对PHP程序支持,尤其是.htaccess和Rewrite支持不好,后来找了N多方法后,终于找到了一个比较简单的解决方法。

不需要你懂得IIS下的httpd.ini配置规则,只要复制粘贴即可。

只要你的虚拟主机空间支持自定义404错误页即可,方法:

1.新建一个记事本,在里面写入下面代码,保存,连同txt格式重新命名为404.php。将404.php上传到你的网站根目录。

< ?php
header("HTTP/1.1 200 OK");
$ori_qs = strtolower($_SERVER['QUERY_STRING']);
$pattern = '/[^;]+;[^:]+:\/\/[^\/]+(\/[^\?]*)(?:\?(.*))?/i';
 
preg_match($pattern, $ori_qs, $matches);
$_SERVER['PATH_INFO'] = $matches[1] . '?' . $matches[2];
$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
$query_args = explode('&', $matches[2]);
unset($_GET);
foreach ($query_args as $arg)
{
$the_arg = explode('=', $arg);
$_GET[$the_arg[0]] = $the_arg[1];
}
 
include('index.php');
?>

2.设置404自定义错误指向wp-404-handler.php,一般来说,绝大多数服务器控制面板均提供该选项。

3.进入WordPress2.7管理后台,“设置”→“永久链接”,随意设置自己喜欢的伪静态地址格式及静态地址后缀。

例如:

/y%year%/%post_id%.html

/%year%/%monthnum%/%post_id%.html

/%year%/%monthnum%/%postname%.html

我用的格式是:/%Category%/%postname%/

为了方便搜索引擎收录/SEO,请注意代码开头一句:header("HTTP/1.1 200 OK");

据说去掉后也不影响SEO,具体的我也不清楚,望以后能有高人解释。

注意:postname不能太长,否则无法正常显示单篇日志。

请自行将代码中的全角字符更改为半角字符!~


点击这里查看txt版本
请自行另存为php文件

Back Top

回复自“WordPress永久链接Windows/IIS下静态化去index.php方法”

评论 (24) 引用 (2) 发表评论 引用地址
  1. Warning: preg_match() [function.preg-match]: Unknown modifier '/' in F:\websites\www\blog\wp-404-handler.php on line 6
    正规表达式不能用?

  2. # $pattern = '/[^;]+;[^:]+:\/\/[^\/]+(\/[^\?]*)(?:\?(.*))?/i';

    • wp会将半角引号自动转换成全角的,所以要手动将它改过来才行。
      如果还是有问题,可以留下邮箱,我将404.php发给你,
      或者参照这篇文章http://www.imwls.com/404-wordpress-permalink-tolower-url/ :smile:

  3. 把一个简单的问题搞的这么复杂,404定向会对引擎有影响的

    • IIS下目前最好的办法就是使用404,Google Site:www.imwls.com,你会发现搜索引擎对页面收录没有任何影响,包括其它蜘蛛/爬虫在内,呵呵 :idea:

  4. 能交流下wordpress下永久链接的设置吗
    希望得到你的帮助,QQ: 249183165

  5. 我用了这种办法,还是去不了index.php,去了以后打不开网站,这是怎么回事能,请高手赐教!

    • 我上面的代码里有全角字符,需要转成半角字符,而且链接里不能含有中文(如果需要支持中文,请看“IIS下配置WordPress永久链接支持中文完美版”),如果实在不知道怎么弄话请留下邮箱,我会将404.php和classes.php发给你;最简单的解决方法是更新到wordpress2.9 beta1,程序原生支持IIS的伪静态。

  6. 你好,能麻烦您将您的404.php文件发给我吗? 我的邮箱390888451@qq.com 谢谢您了

  7. 凤飞飞 :

    你好,能麻烦您将您的404.php文件发给我吗? 我的邮箱390888451@qq.com 谢谢您了

    已发,请查收!

  8. 不错的站,路过看下

  9. Warning: preg_match() [function.preg-match]: Unknown modifier '/' in D:\wwwroot\404.php on line 6

    ..麻烦你发给我一份 404.php好么? 非常感谢!d10000d10000@126.com

  10. 太感谢了 已经ok了
    博主人真好!我收藏您的博客了

  11. @你好呵呵哦 ;-) 客气了。

  12. 很详细的介绍,用WP建站,不如选LINUX主机为好

  13. 我的index.php无论怎样都去不掉,请帮下忙,或者给发份404.php,究竟是404.php,还是wp-404-handler.php,麻烦了,邮箱250601354@qq.com

  14. @Xqiang 对不起啊,是我写错了,应该是在主机控制面板里指向404.php,404代码请看这http://www.imwls.com/wp-content/uploads/404.txt,保存为utf-8格式。

  15. 请问一下,您这个打代码的框框是怎么弄的?

  16. 谢谢,这个方法,翻页不行啊,怎么回事?

  17. Every one acknowledges that our life is high priced, however some people require money for different stuff and not every person gets enough cash. Thence to receive fast loan or college loan will be a proper solution.

  18. How can I make firefox to prompt me for what to do with a file instead of automatically downloading?

  1. 木公博客 » IIS下配置WordPress永久链接支持中文完美版 CHINA WordPress (,二月 17, 2009)

    [...] 前面提到过相关方法http://www.imwls.com/wordpress-iis-cut-index/但是今天在用站长工具查询博客中死链时发现,所有的中文Tag页面均是跳转到我的主题404页面,Google了之后,终于找到一个解决的办法,贴出来分享,让更多在Windows主机下挣扎的同胞们玩好WordPress。 [...]

  2. IIS下配置WordPress永久链接支持中文完美版 - 科技热 AUSTRALIA WordPress (,六月 21, 2010)

    ◎ 這是 Pingback/Trackback, 小牆懷疑這可能是 Spam!
    [...] 前面提到过相关方法http://www.imwls.com/wordpress-iis-cut-index/但是今天在用站长工具查询博客中死链时发现,所有的中文Tag页面均是跳转到我的主题404页面,Google了之后,终于找到一个解决的办法,贴出来分享,让更多在Windows主机下挣扎的同胞们玩好WordPress。 [...]

发表评论

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

*


无觅相关文章插件,快速提升流量