睡到自然醒blog

生物|生命科学| 医药健康| 科普| 分享| 谷妹| 学习| 交流|博客|WordPress|个人网站|

欢迎访问 睡到自然醒blog

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

08月 19th, 2008 · 55 Comments · 建站手记

一开始一时冲动,加之不像购买国外完美支持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 提供的天才设置方法!

[Post to Twitter] 分享到 Twitter! 

延伸阅读:

Tags: ··

55 Comments to "wordpress静态化设置:windows主机(服务器)伪静态去除index.php方法" so far ↓

  • Yacca

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

    回复

  • Lucifr

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

    回复

  • Peltason

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

    回复

    dreamfree reply on 09月 6th, 2008 8:00 pm:

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

    回复

  • 静水深流

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

    回复

  • WordPress SEO优化之关键词选择:博客静态化并更换静态链接友好地址 | 睡到自然醒blog

    [...] 当然,如果你的网站是新网站,建立网站的初期将博客动态链接设置成为伪静态的静态地址,最好设置成这种包含关键词的永久链接是值得推荐的。但如果非得去改变固定链接地址的格式,也只能算是一种冒险的测试了。 [...]

  • jok

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

    回复

    dreamfree reply on 09月 20th, 2008 7:59 am:

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

    回复

  • 搞定窝棚的永久链接 | 窝棚-WPCMS

    [...] 自从在好友罗乔的服务器上搬出来后,用上了上海移动机房的双线服务器,但由于是windows IIS服务器,wordpress永久连接器。昨天听睡觉睡到自然醒的高同学说,有一个很不错的方法,回来后找了找他的文章:windows iis主机(服务器)永久链接生成伪静态地址,发现好像比其它介绍的要简单的多的多。就联系服务器提供商,想不到不到几分钟时间就搞定了。开心一下~~ Rate this topic: (No Ratings Yet)  Loading … Tagged with: [ 窝棚, Permalinks, windows iis, WordPress ] You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site. [...]

  • 窝棚~alanjiang

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

    回复

  • dreamfree

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

    回复

  • 重新整理窝棚,并推荐一个wordpress插件:Batch Categories | 窝棚-WPCMS

    [...] 从wordcamp shanghai回来后,我就决定重新整理一下“窝棚”,先是从听高同学的,整理一下永久链接的事。 [...]

  • 博客IP访问量突破10000+.感谢CCTV.感谢MTV.感谢Channel V.感谢所有TV | 睡到自然醒blog

    [...] 感谢为我提供空间的xx服务器提供商,虽然是windows iis主机,但在博客发展初期阶段最起码让我从代码盲变成了初级代码模仿修改者,并最终克服了除win主机运行PHP速度的其它所有缺陷,比如成功实现了win主机永久连接的完美伪静态; [...]

  • 解决fsockopen(): unable to connect to google.com:80 | 睡到自然醒blog

    [...] iis主机出现的错误,很可能是和我以前为了去掉链接地址中的index.php设置win主机静态链接的方法不兼容,因为修改链接之前没此类错误。当然wordpress [...]

  • WordPress十大插件推荐下载:2008年9月博客必备插件精选 | 睡到自然醒blog

    [...] 7. Redirection 301重定向插件,避免读者访问或搜索引擎抓取不存在日志出现404错误。如果转移旧网站文章或调整链接结构,一款重定向插件将十分便捷。(其实重定向插件有好几个,我以前修改永久链接时用的是Dean’s Permalinks Migration重定向插件,支持国产插件!呵呵。) [...]

  • 深红色 » 更改了永久链接方式

    [...]     具体的请查看这篇帖子,我也在这里谢过了。     http://www.dreamfreeblog.com/wordpress-permalink-url-rewrite-windows-iis-261.html     [...]

  • 51blog

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

    回复

    dreamfree reply on 11月 30th, 2008 12:00 am:

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

    回复

    51Blog reply on 11月 30th, 2008 10:34 am:

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

    回复

  • Ning

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

    回复

  • dreamfree

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

    回复

  • ryan

    问题成功解决
    谢谢了哈

    回复

    dreamfree reply on 02月 8th, 2009 11:57 am:

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

    回复

  • IIS主机永久链接去index.php简约方法 | 风云

    [...] 又过数日,在BO-BLOG里面发现上下篇日志是分类里面的上下篇,于是就上网搜索wp能不能也这么做。结果就搜索到了一篇win iis虚拟主机不需任何wordpress插件,不需要第三方组件完美的wordpress伪静态设置方法。实现非常简单,创建的新文件我放在了跟目录。当然,前提条件是服务器提供商的控制面板有自定义404错误页面的选项。(转自睡到自然醒blog) [...]

  • king51

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

    回复

  • king51

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

    回复

  • 传递《名博》: 上海第一棒, 睡到自然醒 | 左铅右椠-上善若水

    [...] 最后google到了睡到自然醒的一篇用404错误页面去掉index.php的日志, [...]

  • wordpress静态化设置:服务器使用iis伪静态去除index.php

    [...] win iis虚拟主机不需任何wordpress插件,不需要第三方组件完美的wordpress伪静态设置方法。当然,前提条件是服务器提供商的控制面板有自定义404错误页面的选项。 [...]

  • chinateacher

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

    回复

  • diogo

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

    回复

    dreamfree reply on 05月 14th, 2009 2:09 pm:

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

    回复

  • 破口大说

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

    回复

  • Intibet–在西藏记录人生 » Blog Archive » wordpress永久链接(伪静态)去掉index.php的办法

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

  • Quany’s Eden » IIS主机永久链接去index.php简约方法 - It is written!-[www.quany.info]

    [...] 又过数日,在BO-BLOG里面发现上下篇日志是分类里面的上下篇,于是就上网搜索wp能不能也这么做。结果就搜索到了一篇win iis虚拟主机不需任何wordpress插件,不需要第三方组件完美的wordpress伪静态设置方法。实现非常简单,创建的新文件我放在了跟目录。当然,前提条件是服务器提供商的控制面板有自定义404错误页面的选项。 [...]

  • xuexi

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

    怎么修改,请教!

    回复

    dreamfree reply on 07月 19th, 2009 7:27 pm:

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

    回复

  • 橘子酱

    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:

    回复

    dreamfree reply on 09月 13th, 2009 2:19 pm:

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

    回复

  • 5sign

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

    回复

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

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

  • kaka

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

    回复

  • bobo

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

    回复

    dreamfree reply on 11月 22nd, 2009 4:45 pm:

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

    回复

  • bobo

    谢谢你这么快回复我,我可能说的不是很清楚,我把我的代码贴出来吧,帮解决一下这个问题:
    (要注意一点的是我的程序不是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 ?
    谢谢!

    回复

  • bobo

    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;

    回复

  • dreamfree

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

    回复

  • bobo

    谢谢你回复。
    我的思路是你所说的“在点击你的伪静态网址(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 ),即隐藏真实的动态地址,
    有没有好的办法?

    回复

    dreamfree reply on 11月 23rd, 2009 9:16 pm:

    啊…我也被搞晕啦….问题可能出在最后一步 header 转向上,绝对路径? http://php.net/manual/en/function.header.php 你再找点英文资料看看吧,我shi实在无能为力啊…. :cry:

    回复

  • bobo

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

    回复

  • 世纪之光

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

    回复

    dreamfree reply on 11月 30th, 2009 10:11 am:

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

    回复

  • 噼嗞嗞 » 被WordPress固定连接折腾死了

    [...] 问题还得解决,查到了睡到自然醒BLOG一篇文章,成功的将index/php去掉,剩下的就是新加文章404错误的问题。注意到以前的文章的文章名别名都是拼音,而换服后新加的文章别名还是中文,浏览器地址栏中显示为乱码,觉得有可能是这个问题。于是想批量更改别名为拼音,找了下似乎又没有这样的插件。最后使用了wp-slug这个插件,功能是自动把文章的别名变成拼音或者英文的形式。使用这个插件,手动在WordPress编辑栏下点开每一篇文章的“快速编辑”选项,然后直接点“更新”,把新加的十几篇文章的汉字别名都改成了拼音形式,随后新文章终于成功打开,解决问题。 发表评论 | Trackback wordpress提示虚拟空间不足的解决方法什么是博客?—关于博客的全面总结wordpress更新到了2.8WordPress 2.8 Beta1 体验报告Wordpress内置模板条件判断函数50个最好的wordpress插件小菜鸟终于略有所成 目前还没有任何评论. [...]

Leave a Comment