Home > Web > Win主机静态化子目录的WordPress并去掉固定链接里的index.php

Win主机静态化子目录的WordPress并去掉固定链接里的index.php

我在开博的第一篇文章里说到,在架设这个Wordpress博客的过程中有许多心得,会陆续发出来分享。下面所要说的就是架设过程中碰到的一个很让人头疼的问题。

很多人都知道,基于搜索引擎优化的考虑,文章地址最好能够静态化或者伪静态化,这样更容易被搜索引擎收录,例如http://nutsland.cn/blog/archives/55.html,而不是http://nutsland.cn/blog/?p=55

然而和大部分的Win主机用户一样,我的Win主机也不支持URL-Rewrite功能,使用Wordpress自身的设置,固定链接只能是形如http://nutsland.cn/blog/index.php/archives/55.html的形式,中间有个“index.php”,非常碍眼。

上网Google了一下,找到了一个用自定义404页面来实现不含“index.php”的静态化链接功能的方法。  建立一个404.php文件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
header('Status : 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('&amp;',$matches[2]);
unset($_GET);
foreach ($query_args as $arg)
{
$the_arg = explode('=',$arg);
$_GET[$the_arg[0]] = $the_arg[1];
}
include('index.php');
?>

然后把404错误页面设置为404.php,就可以在后台直接设置自己喜欢的固定链接了。

我照此办法试了一下,结果500错误,经过一番摸索发现了问题所在。我的主机只能把404页面设置为根目录下的404.php文件,而我的Wordpress安装在blog子目录里,虽然我已将include(‘index.php’);改为include(‘blog\index.php’);,但是依然不成功,后来发现问题在于include上。404.php页面引用了blog\index.php,而我打开blog\index.php,只有两句代码(不含注释),其中一句是

require('.\wp-blog-header.php');

我把它改成

require('wp-blog-header.php');

然后保存,测试。问题解决!原来加上“.\”以后引用的地址就成了根目录下的wp-blog-header.php了(Win下“.”代表所请求的页面所在的目录,也就是404.php所在的根目录)。

最后总结一下win主机用自定义404页面实现不含index.php的静态固定链接的方法:

1、设定主机的404错误页面为内容如上所示的php文件,有需要时根据实际情况修改为

include('blog\index.php');

(或其他相对路径)

2、如果WP安装在404页面所在目录的子目录里,打开WP目录里的index.php文件,把

require('.\wp-blog-header.php');

改成

require('wp-blog-header.php');

3、进入后台,设定你喜欢的固定链接格式。

分享到:
Categories: Web Tags: , , , , , , , (6,723 views)
  1. July 31st, 2009 at 09:19 | #1

    过于高级了…我这个伪电脑迷看不大懂了。那个静态化(伪静态化)的网址和后面那个?p=55究竟是什么区别呢?
    你构建这个博客,基于WordPress,不过,能不能把你做博客的经历都写下来,心得体验什么的?给我这个12月后想自己搞一个的介绍点经验~

  2. 南方椰岛
    July 31st, 2009 at 11:24 | #2

    @NahuaK
    http://nutsland.cn/blog/?p=55
    是动态页面式的地址,

    http://nutsland.cn/blog/archives/55.html
    是静态页面式的地址,尽管页面本质上也是动态的,但是通过把地址伪装成静态页面的样子,会使搜索引擎更容易收录页面。

    还有Wordpress上手不难的,主机支持php+mysql就可以,安装过程简单,网上有很多上手教程。我会主要写一些碰到的但网上搜索没答案的问题。

  3. November 30th, 2010 at 22:47 | #3

    相当强悍,我的博客也伪静态成功,老大,你太厉害了,向你致敬
    我的也是二级目录博客的案例哦
    欢迎大家来我的龙旗网络营销顾问博客坐坐
    http://www.seo686.com/blog

  4. alexlee
    February 3rd, 2011 at 02:33 | #4

    应该说这是全网写的最全的关于去掉index.php的文章了,支持一下

  1. No trackbacks yet.