一、中文URL 这个问题主要表现为,在默认情况下,Wordpress对于形如这样的链接(链接1):
不能正常访问,会产生404或500错误,或者其他的错误。 而对于这样的链接(链接2):
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了,总会有解决方案的哈!!