wordpress静态化,去掉永久链接中的index.php
使用wordpress近5个月了,现在才发现这个问题,好像是有点晚了。百度也收录了本站的52个页面了,Google收录了126个页面——虽然对于很多站长来说不是很多,但对于我来说还是个比较满意的结果了。所以,要不要改动永久链接结构这个问题,十分为难。也希望能得到大家的意见。
下面还是向大家介绍一下,wordpress静态化,怎么样去掉index.php。相关:主机rewrite功能和cost-html-cache插件。
第一种方案:
不需要第三方插件cos-html-cache支持,利用服务器有自定义404错误页面的功能解决问题,但前提是你的服务器或者主机有自定义404错误页面的功能。如果是服务器那肯定可以支持,如果是虚拟主机,需你的服务器供应商提供自定义404错误页面选项。
你只需创建一个404错误页面,并且写入下列4行代码即可简单优雅的实现无插件完美支持windows iis主机的永久固定链接的伪静态化地址格式。
- <?php
- header(“HTTP/1.1 200 OK”);
- $ori_qs = $_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’);
- ?>
注:这串代码是经过优化修改的,对搜索引擎不会产生影响,原来的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使用的是第一种方法,不错。


两个都不简单啊!!我正愁这事呢!!
第二种方法不知道是否可行?
第一种方法就可以,我当时就是用的第一种方法。
不过,现在没有这个问题了,因为是用的国外的cpanel空间,只需要在后台直接自定义就可以了。
你好,我问个问题,我的自己写了个php的cms,我也用了404页面来伪静态,有一个问题一直没解决,那就是当我点击伪静态地址时,但在浏览器的地址栏还是显示原来的地址,比如我的伪静态地址是www.china.com/t/99,但点击这个地址时,地址栏上显示是我原来用来显示文章内容的地址www.china.com/t.php?id=99,用什么方法可以隐藏这个地址,来显示伪静态地址’www.china.com/t/99′
@bobo
在后台自定义链接了吗,如果设置了还这样,我也无能为力啦,没碰到过。
了解女性最想要的东西,就到精致美眉!
博主,您好,我的空间是Linux主机的,但是我设置URL为永久链接的时候,也是出现index.php,当我去掉index.php却访问不了我的网站,请问这是什么问题,望赐教,谢谢!
博主的文采很OK。
在自定义链接中填写/%postname%或者/%postid%
怎么都是一样的啊?
恩,学习了!