Windows主机对中文URL不支持,伪静态的解决方案
时间:2010年08月23日作者:坏男孩查看次数:1,302 views评论次数:2
一、中文URL
这个问题主要表现为,在默认情况下,Wordpress对于形如这样的链接(链接1):
www.example.com/tag/中文
不能正常访问,会产生404或500错误,或者其他的错误。
而对于这样的链接(链接2):
www.example.com/?tag=中文
WordPress就能够正确解析。
于是解决方案就来了:
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”);
这样就解决了。。。
二、伪静态
第一步、新建一个记事本,在里面写入下面代码保存为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了,总会有解决方案的哈!!!
声明: 本文采用 BY-NC-SA 协议进行授权 | 坏男孩的博客
转载请注明转自《Windows主机对中文URL不支持,伪静态的解决方案》
我这还不行啊
显示的是你第二个链接样式。。。
这样的话,Google收录的第一个链接样式打开显示的就是404页面了
@皇家元林,
不是吧,如果实在不行,直接E-mail吧。
i@huaiboy.com