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



厄…早点看到这个也许我就不用换主机了…
我的页面速度也很慢,在考虑要不要静态一下…… :em68:
这样做是有性能问题的,因为你是利用404错误页来进行跳转,相当于多了“页面找不到跳转到错误页”这一步骤,而且这样做的话用wp-cache这样的插件会不会有问题,我还没测试过,不过对于访问量较小的网站问题不大
这个原作者说对搜索引擎没影响,具体会不会多了404跳转而产生负面影响不是很清楚,但根据我博客的情况来看,好像不存在这种担忧。其实自从我这样修改链接去掉index.php,访问量是显著上升的,可能是链接层次在根目录,呵呵。
有时间IIS搭个测试一下
呵呵,也不用这么折腾吧,看来是有自己服务器的人。这个方法可行的,我已经成功实现去除index.php
虽然方法不错,但会自动生成静态文件。这个倒是挺怕的。~~
呵呵,这个方法去掉index.php肯定没问题的,你的问题真的很奇怪呀,好好检查下吧。
您好,先生,我想问下,为什么我设置指向的404.php页面竟然直接把内容像文本文件一样全部显示了出来,而不是解释执行,怎么办啊?
多谢您。
你说的像文本文件一样全部显示了出来是不是生成了静态页面文件,
可能因为你启用了缓存插件,check :em43:
现在解决了,不过不是通过404转向实现的。
那个像文本文件一样显示了出来还是没有找到原因。。
我把生成静态页面的插件都删除了也还是不行,呵呵。。不过谢谢你了啊。先生。。
请教个问题,我照介绍里说的步骤让供应商帮我把连接指定到了特定文件,但好像还是不行。不知道是不是我最后一步做错了,自己在option设定的那步,能不能写给我看看您的格式是如何的?是不是在自定义那栏写?谢谢。
我的是/%postname%-%post_id%.html啊,404文件你没弄错吧,放在根目下,404错误指向该文件即可。
问题成功解决
谢谢了哈
呵呵,很高兴又一位WIN主机的朋友成功!
我设置了,但是中文的标签不知道如何解决?
详情:http://www.gouwu123.com
连接已经添加
,申请友链
你好,已经用上了,感谢分享
郁闷,好了半天还是不行
请问我的WORDPRESS是放在XXX.COM/HTDOCS/BLOG下的,那么wp-404-handler.php这个文件是不是也要放在XXX.COM/HTDOCS/BLOG下,还是放在XXX.COM/HTDOCS/下?(HTDOCS 是服务器供应商指定的网站目录),谢谢!
是的,和你的 index.php 首页文件是在一个目录里,并且你需要有在主机控制面板指定 404 错误页面的权限。
有人指点吗?我是菜鸟,感觉这个文章写的不详细啊
我的虚拟空间面板
\HttpErrors\404.htm
步骤
1、点击“定制错误页面”按钮后,系统会在您站点根目录下创建一个“HttpErrors”目录。
2、将默认404页面拷贝到该目录下,您可以下载该文件进行修改后上传到该目录下即可。
提示
错误页面文件名称404.htm是不能进行修改的,否则系统将无法正确提示错误。
怎么修改,请教!
抱歉,你的主机修改权限太小了,只能是 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/
上面的错误主要是主机的问题,如果你按部就班用这方法出现错误,那没办法了。你的 RSS 直接打开没有问题。
真是好东西啊. 我就是用Windows主机,老是有好多问题出现.还好看到这篇文章了.谢谢你.
我有个CMS的 home.php 页面使用该方法后 显示不了home.php 其他都正常。。但使用 域名/index.php 又能正常显示 直接 输入域名显示 主题自带的404 页面 请问有什么方法解决~
你好,我问个问题,我的自己写了个php的cms,我也用了404页面来伪静态,有一个问题一直没解决,那就是当我点击伪静态地址时,但在浏览器的地址栏还是显示原来的地址,比如我的伪静态地址是www.china.com/t/99,但点击这个地址时,地址栏上显示是我原来用来显示文章内容的地址www.china.com/t.php?id=99,用什么方法可以隐藏这个地址,来显示伪静态地址’www.china.com/t/99′
不好意思啊,你的情况我不大了解,这方法是针对 WordPress 的,你除了 404 伪静态,是不是还有一些其它 301 转向设置,最后又跳转到了你的真实地址?
谢谢你这么快回复我,我可能说的不是很清楚,我把我的代码贴出来吧,帮解决一下这个问题:
(要注意一点的是我的程序不是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 ?
谢谢!
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;
虽然这代码我不是太懂,但是我觉得你的设置更像是在 301 转向设置的写法。我觉得正确的 404 伪静态 思路是,在点击你的伪静态网址后,跳转到 404 错误页面,然后通过 php 函数传递到相对应的变量,再匹配成动态地址,查询数据库输出伪静态页面的相关内容。我感觉你的写法是在获取变量再将之伪静态,而不是在查询数据库。呵呵,抱歉,我对这代码真的不是很在行,上面是我的理解。
谢谢你回复。
我的思路是你所说的“在点击你的伪静态网址(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 ),即隐藏真实的动态地址,
有没有好的办法?
啊…我也被搞晕啦….问题可能出在最后一步 header 转向上,绝对路径? http://php.net/manual/en/function.header.php 你再找点英文资料看看吧,我shi实在无能为力啊….
哈哈。
还是非常感谢为我耐心的解答,我自己查查这个http://php.net/manual/en/function.header.php 吧,谢谢你,我会经常关注的你的blog的。
谢谢。
技巧性很强的一种方式 学习了。
看你博客还是动态 ?p 链接格式。
果然是技术,不过好怕百度不喜欢我这样搞啊!
博主帮我看下:
我的博客blog.buncl.com,帮我看下为什么点击Categories下面的
* MLB
* NFL
* NHL
* Other
或者页面底部的分页1.2都会转向404页面,该怎么设置才能正常转到页面而不是显示404?
我的是windows主机
你这个 windows 主机没安装伪静态组件,联系服务器运营商管理员。
或者购买国外主机。。。可以联系我。。。
高手哪,佩服,问题解决了。。。文章标题不能是中文,要不也不管用。。。
博主,我用404方法实现了伪静态,但是这样原来的404页面就被改了。
怎么实现如果点击了错误页面还能像以前提示一个跳转页面呢?