五月 29th, 2010 @ 7:21 下午 

前几日给博客更换服务器,从原来的Linux服务器换为Windows平台下的IIS服务器,主页显示正常,次日发现日志和页面均不能正常显示。

后将永久链接(固定链接)改为默认格式“http://www.sunyundong.com/?p=123”,一切显示正常。谷歌了一下才知道是IIS服务器对WordPress支持不好的原因。

在网上找了很多相关的文章,大多是用404.php重新定位到正确的页面,试了几个404.php,最后选择了木公的404文件,通过他的另一篇日志还解决了IIS服务器对中文地址支持不好的问题,帮了自己很大的忙。在这里转载一下,希望能给更多同样问题的朋友带来方便。

404.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
header("HTTP/1.1 200 OK");
$ori_qs = strtolower($_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');
?>

将该404.php上传到服务器根目录后,日志和页面就能正常访问了。(前提是在服务器端将错误页面选择为404.php,若无404.php选项,则将文件名改成与服务器对应的的php即可)

如果还不能访问,那可能是因为地址中包含中文,解决方法如下:
1.打开wp-includes/classes.php文件,找到如下代码:

1
2
3
4
5
6
7
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']

将其修改为

1
2
3
4
5
6
7
if ( isset($_SERVER['PATH_INFO']) )
        $pathinfo = iconv('GBK', 'UTF-8', $_SERVER['PATH_INFO']);
else
        $pathinfo = '';
$pathinfo_array = explode('?', $pathinfo);
$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
$req_uri = iconv('GBK', 'UTF-8', $_SERVER['REQUEST_URI']);

这样就支持中文地址了。

另外,我将以上工作做好之后,发现自己主题的404.php不能正常跳转了,换成默认主题就可以,很是奇怪。最后做了一下比较,发现自己主题的404.php开头多了这样一段代码

1
2
3
<?php if (!empty($_SERVER['SCRIPT_FILENAME']) && '404.php' == basename($_SERVER['SCRIPT_FILENAME']))
die ('Please do not load this page directly. Thanks!');
?>

把她屏蔽掉了之后(或者干脆删掉)就能正确跳转到自己的404错误页面了。虽然不能完全理解这句话的意思,等以后换回Linux服务器在把他还原就是了~

转自: 木公博客
最后编辑: 七月 30th, 2010 @ 04:34 下午

Email永久链接
Tags


 

这篇日志的回复 » (没有回复)

 
发表回复

提示: 您可以使用以下标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tags
Comment Meta:
回复RSS
引用URI


 最近 50 篇日志
 后退
切换主题...
  • 访问 » 8663
  • 日志 » 59
  • 回复 » 77
切换主题...
  • VoidVoid
  • LifeLife
  • EarthEarth
  • WindWind « Default
  • WaterWater
  • FireFire
  • LightLight

留言板



    No Child Pages.