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不支持,伪静态的解决方案

标签:,分类:网络
2条评论
  1. 皇家元林留言于:2010年09月16日20:04 回复

    我这还不行啊
    显示的是你第二个链接样式。。。
    这样的话,Google收录的第一个链接样式打开显示的就是404页面了

发表评论

*

*

d9 d8 d7 d6 d56 d55 d54 d53 d52 d51 d50 d5 d49 d48 d47 d46 d45 d44 d43 d42 d41 d40 d4 d39 d38 d37 d36 d35 d34 d33 d32 d31 d30 d3 d29 d28 d27 d26 d25 d24 d23 d22 d21 d20 d2 d19 d18 d17 d16 d15 d14 d13 d12 d11 d10 d1