wordpress静态化设置:windows主机(服务器)伪静态去除index.php方法




一开始一时冲动,加之不像购买国外完美支持wordpress的linux主机Apache平台要用paypal付款支付那么麻烦,当初还是选择了入门级的windows服务器iis平台环境主机搭建了这个博客,并且起了一个非常“浪漫”的博客名字,不睡则以,一睡就是一觉“睡到自然醒blog”。于是,俺也走上了独立个人博客之旅。

搭建好了博客,其实也已经考虑好了以后换其它主机的退路。所以还是很保守的暂时选择了用“域名/index.php/post_id.html”,比如http://www.dreamfreeblog.com/261.html作为博客的永久链接地址(Permalinks)。

为了去掉wordpress博客文章连接地址中嵌入的index.php格式,在网上一直苦苦搜索,知道有个方法可以用ISAPI_Rewrite组件实现类似linux主机apache环境的mod_rewrite的url rewrite地址重写功能,但必须要拥有服务器上运行该组件的权限,作罢。以后也就没进一步尝试其它方法。先有个伪静态地址格式也不错了。

前天尝试用英文关键词搜索,果然,对于一个代码盲来说。依赖一定的网络搜索和解决问题的能力。终于找到了win iis虚拟主机不需任何wordpress插件,不需要第三方组件完美的wordpress伪静态设置方法。当然,前提条件是服务器提供商的控制面板有自定义404错误页面的选项。

你只需创建一个404错误页面,并且写入下列4行代码即可简单优雅的实现无插件完美支持windows iis主机的永久固定链接的伪静态化地址格式。去掉网页地址中的index.php!

<?php
$qs = $_SERVER['QUERY_STRING'];
$_SERVER['REQUEST_URI'] = substr($qs, strpos($qs, ‘:80′)+3);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include(‘index.php’);
?>

这样即可固定REQUEST_URI和PATH_INFO参量并且包括进去index.php,剩下的将交给wordpress完成任务(说实话,这参数定义代码偶也不清楚,依葫芦画瓢即可)。

具体设置步骤:
1.新建一个记事本,在里面写入上面代码,保存,连同txt格式重新命名为wp-404-handler.php。
2.设置404自定义错误指向wp-404-handler.php,一般来说,绝大多数服务器控制面板均提供该选项。
3.进入wordpress管理后台,设置(Options)-永久链接(Permalinks),你就当自己的主机是linux主机使好了,任意、随便设置自己喜欢的伪静态地址格式及静态地址后缀。
4.Enjoy! :lol:

推荐链接地址层次不要太深,并且伪静态化地址加上html/htm,不过也有人推荐不要加上伪静态后缀,因为那样搜索引擎可能会认为那种地址是一个分类目录,而不是一个具体的网页,从而获得更高的搜索排名权重,现在wordpress个人博客也比较流行那种伪静态格式。

不管怎样,你成功去掉了index.php!最后感谢英文作者einar 提供的天才设置方法!

延伸阅读:

About dreamfree:

每天梦想睡到自然醒的孩纸伤不起...zZ

Find all posts by dreamfree | Visit Website

64 Responses to “wordpress静态化设置:windows主机(服务器)伪静态去除index.php方法”
  1. 08.20.2008

    厄…早点看到这个也许我就不用换主机了…

  2. 08.21.2008

    我的页面速度也很慢,在考虑要不要静态一下…… :em68:

  3. 09.06.2008

    这样做是有性能问题的,因为你是利用404错误页来进行跳转,相当于多了“页面找不到跳转到错误页”这一步骤,而且这样做的话用wp-cache这样的插件会不会有问题,我还没测试过,不过对于访问量较小的网站问题不大

    • 09.06.2008

      这个原作者说对搜索引擎没影响,具体会不会多了404跳转而产生负面影响不是很清楚,但根据我博客的情况来看,好像不存在这种担忧。其实自从我这样修改链接去掉index.php,访问量是显著上升的,可能是链接层次在根目录,呵呵。

  4. 09.08.2008

    :oops: 对啊,早点看我就不用换主机了。。。

  5. 09.19.2008

    有时间IIS搭个测试一下 :mrgreen:

    • 09.20.2008

      呵呵,也不用这么折腾吧,看来是有自己服务器的人。这个方法可行的,我已经成功实现去除index.php :grin:

  6. 09.22.2008

    虽然方法不错,但会自动生成静态文件。这个倒是挺怕的。~~

  7. 09.22.2008

    呵呵,这个方法去掉index.php肯定没问题的,你的问题真的很奇怪呀,好好检查下吧。

  8. 11.28.2008

    您好,先生,我想问下,为什么我设置指向的404.php页面竟然直接把内容像文本文件一样全部显示了出来,而不是解释执行,怎么办啊?
    多谢您。

    • 11.30.2008

      你说的像文本文件一样全部显示了出来是不是生成了静态页面文件,
      可能因为你启用了缓存插件,check :em43:

      • 11.30.2008

        现在解决了,不过不是通过404转向实现的。
        那个像文本文件一样显示了出来还是没有找到原因。。
        我把生成静态页面的插件都删除了也还是不行,呵呵。。不过谢谢你了啊。先生。。

  9. Ning
    12.02.2008

    请教个问题,我照介绍里说的步骤让供应商帮我把连接指定到了特定文件,但好像还是不行。不知道是不是我最后一步做错了,自己在option设定的那步,能不能写给我看看您的格式是如何的?是不是在自定义那栏写?谢谢。

  10. 12.02.2008

    我的是/%postname%-%post_id%.html啊,404文件你没弄错吧,放在根目下,404错误指向该文件即可。

  11. 01.24.2009

    问题成功解决
    谢谢了哈

    • 02.08.2009

      呵呵,很高兴又一位WIN主机的朋友成功!

  12. 03.02.2009

    我设置了,但是中文的标签不知道如何解决?
    详情:http://www.gouwu123.com

  13. 03.03.2009

    连接已经添加 :smile: ,申请友链 :mrgreen:

  14. 04.01.2009

    你好,已经用上了,感谢分享

  15. diogo
    05.14.2009

    郁闷,好了半天还是不行 :sad:
    请问我的WORDPRESS是放在XXX.COM/HTDOCS/BLOG下的,那么wp-404-handler.php这个文件是不是也要放在XXX.COM/HTDOCS/BLOG下,还是放在XXX.COM/HTDOCS/下?(HTDOCS 是服务器供应商指定的网站目录),谢谢!

    • 05.14.2009

      是的,和你的 index.php 首页文件是在一个目录里,并且你需要有在主机控制面板指定 404 错误页面的权限。

  16. 05.25.2009

    :roll: 哈!我今天正好写了自己自以为是找到了新的简单的伪静态的方法呢!后来被自己给打翻了。

  17. 07.19.2009

    有人指点吗?我是菜鸟,感觉这个文章写的不详细啊
    我的虚拟空间面板
    \HttpErrors\404.htm
    步骤
      1、点击“定制错误页面”按钮后,系统会在您站点根目录下创建一个“HttpErrors”目录。
      2、将默认404页面拷贝到该目录下,您可以下载该文件进行修改后上传到该目录下即可。
     提示
      错误页面文件名称404.htm是不能进行修改的,否则系统将无法正确提示错误。

    怎么修改,请教!

    • 07.19.2009

      抱歉,你的主机修改权限太小了,只能是 404.htm 的 .htm 页面,不能设置 404.php,并且错误页面不在网站根目录,也就不能传递变量,无法通过这个方法伪静态固定链接。

  18. 09.13.2009

    Parse error: syntax error, unexpected ‘:’ in /www/users/sudasuta.com/htdocs/wp-404-handler.php on line 3

    这又是什么问题呢..我的站点经过了伪静态设置,rss有错误。。

    http://feedvalidator.org/check.cgi?url=http://sudasuta.com/feed/
    :cry:

    • 09.13.2009

      上面的错误主要是主机的问题,如果你按部就班用这方法出现错误,那没办法了。你的 RSS 直接打开没有问题。

  19. 09.15.2009

    真是好东西啊. 我就是用Windows主机,老是有好多问题出现.还好看到这篇文章了.谢谢你.

  20. 11.11.2009

    我有个CMS的 home.php 页面使用该方法后 显示不了home.php 其他都正常。。但使用 域名/index.php 又能正常显示 直接 输入域名显示 主题自带的404 页面 请问有什么方法解决~

  21. bobo
    11.22.2009

    你好,我问个问题,我的自己写了个php的cms,我也用了404页面来伪静态,有一个问题一直没解决,那就是当我点击伪静态地址时,但在浏览器的地址栏还是显示原来的地址,比如我的伪静态地址是www.china.com/t/99,但点击这个地址时,地址栏上显示是我原来用来显示文章内容的地址www.china.com/t.php?id=99,用什么方法可以隐藏这个地址,来显示伪静态地址’www.china.com/t/99′

    • 11.22.2009

      不好意思啊,你的情况我不大了解,这方法是针对 WordPress 的,你除了 404 伪静态,是不是还有一些其它 301 转向设置,最后又跳转到了你的真实地址?

  22. bobo
    11.22.2009

    谢谢你这么快回复我,我可能说的不是很清楚,我把我的代码贴出来吧,帮解决一下这个问题:
    (要注意一点的是我的程序不是WordPress,是我自己写的一个简单的CMS。我想伪静态,所以就用404伪静态,但我的404的错误页面代码与WordPress的404错误页面代码不一样。)

    这就是我404错误页面里的代码。
    当我用伪静态地址如http://www.china.com/c-99去显示内容时,转到显示页面时浏览器的地址栏显示是我的真实地址http://www.china.com/c.php?id=99,根据代码结果是这样的,
    那现在有没有办法当我转到显示页面时浏览器还是显示伪静态地址http://www.china.com/c-99 ?
    谢谢!

  23. bobo
    11.22.2009

    header(‘HTTP/1.1 200 OK’);
    $request_uri=$_SERVER['QUERY_STRING'];//获取url
    $request_uri= substr($request_uri, strpos($request_uri, ‘:80′)+3);//获取参数
    preg_match(‘/\/\w+-(\d+)/i’,$request_uri,$param);//匹配参数值
    $parameter=’c.php?id=’.$param[1];//获得参数值
    Header(‘location: http://www.china.com/‘.$parameter);//转到显示页面.
    exit;

  24. 11.23.2009

    虽然这代码我不是太懂,但是我觉得你的设置更像是在 301 转向设置的写法。我觉得正确的 404 伪静态 思路是,在点击你的伪静态网址后,跳转到 404 错误页面,然后通过 php 函数传递到相对应的变量,再匹配成动态地址,查询数据库输出伪静态页面的相关内容。我感觉你的写法是在获取变量再将之伪静态,而不是在查询数据库。呵呵,抱歉,我对这代码真的不是很在行,上面是我的理解。

  25. bobo
    11.23.2009

    谢谢你回复。
    我的思路是你所说的“在点击你的伪静态网址(http://www.china.com/c-99 )后,跳转到 404 错误页面,然后通过 php 函数传递到相对应的变量,再匹配成动态地址(http://www.china.com/c.php?id=99),查询数据库输出伪静态页面的相关内容”。
    就是在”查询数据库输出伪静态页面的相关内容“时,浏览器的地址显示的是动态地址(http://www.china.com/c.php?id=99),但这时我想让它显示伪静态网址(http://www.china.com/c-99 ),即隐藏真实的动态地址,
    有没有好的办法?

  26. bobo
    11.23.2009

    哈哈。
    还是非常感谢为我耐心的解答,我自己查查这个http://php.net/manual/en/function.header.php 吧,谢谢你,我会经常关注的你的blog的。
    谢谢。

  27. 11.28.2009

    技巧性很强的一种方式 学习了。

    • 11.30.2009

      看你博客还是动态 ?p 链接格式。

  28. 06.29.2010

    果然是技术,不过好怕百度不喜欢我这样搞啊!

  29. 10.12.2010

    博主帮我看下:
    我的博客blog.buncl.com,帮我看下为什么点击Categories下面的
    * MLB
    * NFL
    * NHL
    * Other
    或者页面底部的分页1.2都会转向404页面,该怎么设置才能正常转到页面而不是显示404?

    我的是windows主机

    • 10.12.2010

      你这个 windows 主机没安装伪静态组件,联系服务器运营商管理员。

      • 10.12.2010

        或者购买国外主机。。。可以联系我。。。

  30. 曾经年少轻狂
    01.04.2011

    高手哪,佩服,问题解决了。。。文章标题不能是中文,要不也不管用。。。

  31. 10.03.2011

    博主,我用404方法实现了伪静态,但是这样原来的404页面就被改了。
    怎么实现如果点击了错误页面还能像以前提示一个跳转页面呢?

  1. [...] 当然,如果你的网站是新网站,建立网站的初期将博客动态链接设置成为伪静... dreamfreeblog.com/wordpres-seo-keywords-url-changing-282.html
  2. [...] 自从在好友罗乔的服务器上搬出来后,用上了上海移动机房的双线服务器,但... wp.org.cn/shanty-get-a-permanent-link.html
  3. [...] 从wordcamp shanghai回来后,我就决定重新整理一下“窝棚”,先是从听高同学的,整... wp.org.cn/refresh-shanty-wporgcn-wordpress-plugin-batch-categories.html
  4. [...] 感谢为我提供空间的xx服务器提供商,虽然是windows iis主机,但在博客发展初期... dreamfreeblog.com/ip-10000-plus-thank-cctv-mtv-channelv-all-tv-308.html
  5. [...] http://www.dreamfreeblog.com/wordpress-permalink-url-rewrite-windows-iis-261.html 分 类:W... renhaibo.com/archives/14.html
  6. [...] iis主机出现的错误,很可能是和我以前为了去掉链接地址中的index.php设置win主... dreamfreeblog.com/fsockopen-google-com-80-332.html
  7. [...] 7. Redirection 301重定向插件,避免读者访问或搜索引擎抓取不存在日志出现404错... dreamfreeblog.com/top-10-wordpress-plugins-october-2008-341.html
  8. [...]     具体的请查看这篇帖子,我也在这里谢过了。     http://www.dreamfreeblog.com/... eryi.cn/2008/11/26/change-permanent-link
  9. [...] 又过数日,在BO-BLOG里面发现上下篇日志是分类里面的上下篇,于是就上网搜索w... akheart.cn/blog/2009/cancel-indexphp-in-permalinks-on-iis-sever
  10. [...] 最后google到了睡到自然醒的一篇用404错误页面去掉index.php的日志, [...]... bwskyer.cn/the-first-transmit-famous-blog-book.html
  11. [...] win iis虚拟主机不需任何wordpress插件,不需要第三方组件完美的wordpress伪静态设... hifiwang.net/archives/371.html
  12. [...] 前天尝试用英文关键词搜索,果然,对于一个代码盲来说。依赖一定的网络搜... intibet.org/167.html
  13. [...] 又过数日,在BO-BLOG里面发现上下篇日志是分类里面的上下篇,于是就上网搜索w... quany.info/index.php/remove-index-php-on-iis-for-permanentlink
  14. [...] 前天尝试用英文关键词搜索,果然,对于一个代码盲来说。依赖一定的网络搜... netxsec.com/index.php/5.html
  15. [...] 问题还得解决,查到了睡到自然醒BLOG一篇文章,成功的将index/php去掉,剩下的... xixipan.cn/digital/web/were-fixed-connection-wordpress-toss-dead.html
  16. [...] 自从在好友罗乔的服务器上搬出来后,用上了上海移动机房的双线服务器,但... wp.org.cn/wp-permanent-link.html
  17. [...] 一开始我是从http://www.dreamfreeblog.com/wordpress-permalink-url-rewrite-windows-iis-261.html中... bzwbz.com/wordpress-window-url-rewrite.html
  18. [...] WordPress在windows主机下,设置永久链接为非默认的时候,会包含首页文件index.php... hicc.cc/permanent-link-to-windows-host-wordpress-index-php.html

Leave a Reply

使用新浪微博登陆


分类目录

文章存档

Event

欢迎上海地区摄影爱好者或自信MM参加 自然醒blog 线下活动:暴走上海街拍 or 人像外拍,详情点击图片链接

永久有效 7.49 美金 Godaddy 优惠