用win主机首先就是杯具,如果再整wordpress更是杯具。捣鼓了一个整形站,两天才搞定,哎,由于要找空间商设置404,网上搜的都是长篇大论的,而且都是复制的,我这里给大家总结下吧。
1、安装主题后,设置固定链接,选择自己喜欢的方式,比如:/%postname%.htm
设置后,发现文章、分类、标签等等都是404错误,所以先要使用到的插件是cos-html-cachev111.zip
记住,只能是1.1版本的,以后也不要升级。使用方法是下载后放到/wp-content/plugins/目录下,然后再后台启动。
这样设置后,文章的链接是正常了。
2、分类地址中含有Category,这里要使用第2个插件:WP No Category Base,自己在后台搜了安装启用就OK了。
3、虽然去掉了Category,但是还是如法打开,这样需要用到404.php了,代码如下:
<?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’);
?>
保存为wp-404.php上传到根目录,然后在主机上设置自定义的404页面为wp-404.php,如果在同目录下还安装了dedecms的话,就放到下面的目录中,比如wp-includes下。
这样的话分类地址正常了。
这里如果把404传上去之后,进入分类出现:Warning: Cannot modify header information – headers already sent by (output started at /home/public_html/wp-404.php:1),这样的错误,解决方法见:
wordpress出现”Warning: Cannot modify header information”解决方法
4、由于标签地址含有中文,无法显示,解决方法如下:
原理是,IIS会将PathInfo中的UTF-8转换成GBK,而QueryString中就不会转换,故而为了使用Permalink,采用以下方法:
打开wp-includes/classes.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'];
改为
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”);
OK,所有的问题解决。
(当然,为了方便使用wordpress,大家尽量使用linux。)
Leave A Comment?