Login dark
author: 零贰
title: IIS下wordpress利用404页面实现伪静态
date: 2012-04-25 05:20:52
category: [学习笔记]
tags: [Wordpress,虚拟主机]

<p>      前面一段时间网站出了问题,一直没有时间去恢复,所以也没有去更新网站内容了,这几天有时间查找了一下问题,发现是使用404页面实现伪静态的原因,网站上的所有链接都无法打开了,所以就重新恢复了一下,终于还是正常了。</p><!--more-->
<p> </p> <p>下面是修改方法:</p> <p>      两种IIS下wordpress利用404页面实现伪静态的方法: <p>方法一: <p>$qs = $_SERVER['QUERY_STRING'];
$qsu = mb_convert_encoding("$qs","UTF-8","GBK");
$_SERVER['REQUEST_URI'] = substr($qsu, strpos($qsu, ':80')+3); //转换编码以支持中文的TAG<br>$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];<br>include("/index.php");<br>方法简单,代码也比较少,可实现页面伪静态。<br>唯一缺点:会出现多个首页<br>比如: <p><a href="http://www.cool02.com/index.php">http://www.cool02.com/index.php</a> <p><a href="http://www.cool02.com/index.php">http://www.cool02.com/index.php</a> <p><a href="http://www.hujuntao.com/archives/archives/&hellip;/index.php">http://www.cool02.com/…/index.php</a> <p>实际上这些地址是不存在的,但是打开上面地址你会发现显示的是首页的内容。</p> <p><br><strong>方法二: </strong></p> <p>header("Content-type: text/html; charset=utf-8");<br>$default = 'index.php';
$thisfile = '404.php';<br>$_SERVER['ORIG_PATH_TRANSLATED'] = str_replace($thisfile, $default, $_SERVER['ORIG_PATH_TRANSLATED']);<br>$_SERVER['SCRIPT_FILENAME'] = str_replace($thisfile, $default, $_SERVER['SCRIPT_FILENAME']);<br>$_SERVER['ORIG_PATH_INFO'] = str_replace($thisfile, $default, $_SERVER['ORIG_PATH_INFO']);<br>$_SERVER['SCRIPT_NAME'] = str_replace($thisfile, $default, $_SERVER['SCRIPT_NAME']);<br>$_SERVER['PHP_SELF'] = str_replace($thisfile, $default, $_SERVER['PHP_SELF']);<br>$_SERVER['PATH_INFO'] = false;
$qs =&amp; $_SERVER['QUERY_STRING'];
$qs = mb_convert_encoding("$qs","UTF-8","GBK"); //转换编码以支持中文URL
$ru =&amp; $_SERVER['REQUEST_URI'];
$pos = strrpos($qs, '://');
$pos = strpos($qs, '/', $pos + 4);<br>$_SERVER['URL'] = $ru = substr($qs, $pos);<br>$qs = trim(stristr($ru, '?'), '?');<br>// Required for WordPress 2.8+<br>$_SERVER['HTTP_X_ORIGINAL_URL'] = $ru;<br>// Fix GET vars<br>foreach ( $_GET as $var =&gt; $val ) {
  if ( substr($var, 0, 3) == '404') {<br>&nbsp;&nbsp;&nbsp; if ( strstr($var, '?') ) {
      $newvar = substr($var, strpos($var, '?') + 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $_GET[$newvar] = $val;
    }
    unset($_GET[$var]);
  }
  break;
}
include($default);
      代码比较多,有点复杂。可实现页面伪静态,不影响正常的404页面显示,中文TAG不出现找不到的情况,不出出现多个首页。 <p>使用方法:</p> <p>1、首先复制上面这段代码另存为404.php保存到网站根目录
2、设置站点404错误页面。虚拟主机,现在大部分虚拟主机控制面板都支持自定义404错误页面,把地址设置为404.php。自己的服务器,可以通过网站属性-自定义错误来设置404错误页面。
3、进入WordPress后台固定连接选项建立一个自定义结构。例如:/%post_id%.html</p> <p> </p> <p>    现在本站使用的第一种方法,第二种方法无法实现,原因不明:(</p>