首页 > 建站 > wordpress静态化,去掉永久链接中的index.php

wordpress静态化,去掉永久链接中的index.php

2009年5月19日 发表评论 阅读评论

使用wordpress近5个月了,现在才发现这个问题,好像是有点晚了。百度也收录了本站的52个页面了,Google收录了126个页面——虽然对于很多站长来说不是很多,但对于我来说还是个比较满意的结果了。所以,要不要改动永久链接结构这个问题,十分为难。也希望能得到大家的意见。

下面还是向大家介绍一下,wordpress静态化,怎么样去掉index.php。相关:主机rewrite功能和cost-html-cache插件。

第一种方案:
不需要第三方插件cos-html-cache支持,利用服务器有自定义404错误页面的功能解决问题,但前提是你的服务器或者主机有自定义404错误页面的功能。如果是服务器那肯定可以支持,如果是虚拟主机,需你的服务器供应商提供自定义404错误页面选项。
你只需创建一个404错误页面,并且写入下列4行代码即可简单优雅的实现无插件完美支持windows iis主机的永久固定链接的伪静态化地址格式。

  1. <?php
  2. header(“HTTP/1.1 200 OK”);
  3. $ori_qs = $_SERVER['QUERY_STRING'];
  4. $pattern = ‘/[^;]+;[^:]+:\/\/[^\/]+(\/[^\?]*)(?:\?(.*))?/i’;
  5. preg_match($pattern, $ori_qs, $matches);
  6. $_SERVER['PATH_INFO']   = $matches[1] . ‘?’ . $matches[2];
  7. $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
  8. $query_args             = explode(‘&’, $matches[2]);
  9. unset($_GET);
  10. foreach ($query_args as $arg)
  11. {
  12. $the_arg = explode(‘=’, $arg);
  13. $_GET[$the_arg[0]] = $the_arg[1];
  14. }
  15. include(‘index.php’);
  16. ?>

注:这串代码是经过优化修改的,对搜索引擎不会产生影响,原来的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’);
?>

具体设置步骤:

  • 新建一个记事本,在里面写入上面代码,保存,连同txt格式重新命名为wp-404-handler.php。将wp-404-handler.php上传到网站根目录。
  • 设置404自定义错误指向wp-404-handler.php,一般来说,绝大多数服务器控制面板均提供该选项。
  • 进入wordpress管理后台,设置(Options)-永久链接(Permalinks),你就当自己的主机是linux主机使好了,任意、随便设置自己喜欢的伪静态地址格式及静态地址后缀。
    例如:
    /y%year%/%post_id%.html
    /%year%/%monthnum%/%post_id%.html
    /%year%/%monthnum%/%postname%.html

第二种方案:
无Rewrite用cos-html-cache实现静态化
要求:使用下载cos-html-cache 1.1
具体设置步骤:

  • 下载cos-html-cache 1.1 ,解压,传到/wp-content/plugins/目录,在后台”插件”中启用”cos-html-cache”
  • 在”设置”永久选项中,自定义结构修改静态化的规则,例如/html/%postname%/
  • 下载404代码,保存为404.asp。并且上传到网站的跟目录,设置404自定义错误指向404.asp
  • 在后台cos-html-cache 管理选项生成静态页面,就可以实现目的了。

总结:
第一种方案比较简单,可以显现无index.php的永久链接。第二种方案较复杂点,但是可以生成静态页面,且可以实现无index.php的永久链接。

Myto使用的是第一种方法,不错。

  1. 2009年9月28日10:34 | #1

    两个都不简单啊!!我正愁这事呢!!

  2. 2009年9月28日10:54 | #2

    第二种方法不知道是否可行?

  3. 2009年9月28日20:35 | #3

    第一种方法就可以,我当时就是用的第一种方法。
    不过,现在没有这个问题了,因为是用的国外的cpanel空间,只需要在后台直接自定义就可以了。

  4. bobo
    2009年11月22日15:18 | #4

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

  5. 2009年11月22日18:14 | #5

    @bobo
    在后台自定义链接了吗,如果设置了还这样,我也无能为力啦,没碰到过。

  6. 2009年11月23日18:15 | #6

    了解女性最想要的东西,就到精致美眉!

  7. ens
    2009年12月11日00:10 | #7

    博主,您好,我的空间是Linux主机的,但是我设置URL为永久链接的时候,也是出现index.php,当我去掉index.php却访问不了我的网站,请问这是什么问题,望赐教,谢谢!

  8. 2009年12月11日00:47 | #8

    博主的文采很OK。

  9. 2009年12月12日09:11 | #9

    在自定义链接中填写/%postname%或者/%postid%

  10. 2010年4月7日15:43 | #10

    怎么都是一样的啊?

  11. 2010年4月8日23:00 | #11

    恩,学习了!

  1. 2010年1月6日00:21 | #1