wordpress实现伪静态


算算到这个月,做自己的网站已经差不多一年了。慢慢的熟悉了网站建设、运行、优化、改版的各种知识,收获很大。

现在说说一个让我感到莫大的开心的事,刚刚搞定了wordpress的静态化。关于这个静态化我在做Discuz的时候就遇到过,后来做wordpress也遇到了同样的问题,今天这个问题解决了,特此撰文以留念。

1、上传一个404.php到网站的根目录,内容如下:
[php]
<?php
$qs = $_SERVER[‘QUERY_STRING’];
$_SERVER[‘REQUEST_URI’] = substr($qs, strpos($qs, ‘:80’)+3);
$_SERVER[‘PATH_INFO’] = $_SERVER[‘REQUEST_URI’];
include(‘index.php’);
?>
[/php]

2、在网站空间的控制面板里面设置自定义404出错页为自己的404.php

3、在wordpress后台设置自定义固定链接,我的是这么写的:“/archives/%post_id%.html”

4、这样设置后基本能实现文章的静态化,但是我发现两个问题,点击目录或者标签云里面的中文后出错。解决方法如下:
a.解决点击分类目录出错:将分类目录或者自定义菜单的“别名”改成英文。
b.解决点击标签云出错:找到网站根目录下的wp-includes/class-wp.php文件中的如下代码(3.3.2版本)
[php]
if ( isset($_SERVER[‘PATH_INFO’]) )
$pathinfo = $_SERVER[‘PATH_INFO’];
else
$pathinfo = ”;
$pathinfo_array = explode(‘?’, $pathinfo);
$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
$req_uri = $_SERVER[‘REQUEST_URI’];
[/php]
将其中的第二行和最后一行内容修改为如下
[php]
if ( isset($_SERVER[‘PATH_INFO’]) )
$pathinfo = mb_convert_encoding($_SERVER[‘PATH_INFO’], ‘utf-8’, ‘GBK’);
else
$pathinfo = ”;
$pathinfo_array = explode(‘?’, $pathinfo);
$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
$req_uri = mb_convert_encoding($_SERVER[‘REQUEST_URI’], ‘utf-8’, ‘GBK’);
[/php]

OK,现在网站的静态化成功了

2 Responses Comment (2) Trackback (0)
  1. respider :

    第四步后面的错误,应该是wordpress版本的问题 :neutral:

    1. SingleX Post author :

      @respider : 我一直用UTF-8编码。如果有,我就尽量不用GBK

发表评论