wordpress中文tag中文URL产生404错误解决方案

一、中文URL 这个问题主要表现为,在默认情况下,Wordpress对于形如这样的链接(链接1):
www.phpcode8.com/tag/中文
不能正常访问,会产生404或500错误,或者其他的错误。 而对于这样的链接(链接2):
www.phpcode8.com/?tag=中文
WordPress就能够正确解析。 于是解决方案就来了: IIS会将PathInfo中的UTF-8转换成GBK,而QueryString中就不会转换,故而为了使用Permalink,采用以下方法: 打开wp-includes/classes-wp.php文件,在第149行左右(wordpress版本3.2.1)
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”);
这样就解决了。。。 复制到文件中注意替换标点符号 二、伪静态 第一步、新建一个记事本,在里面写入下面代码保存为txt格式,重新命名为404.php,上传到网站根目录
代码: <?php $qs = $_SERVER['QUERY_STRING']; $_SERVER['REQUEST_URI'] = substr($qs, strpos($qs, ‘:80′)+3); $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI']; include(‘index.php’); ?>
第二步、到你的虚拟主机控制面板,设置404自定义错误指向404.php 第三步、进入WordPress管理后台,点击设置(Options),点击固定链接(Permalinks) 设置为/%post_id%.html 好了,伪静态就做好了。。。不要再后悔选择Windows了,总会有解决方案的哈!!

posted on 2012-02-29 13:53  IT技术畅销书  阅读(922)  评论(0编辑  收藏  举报

导航