IIS下wordpress利用404页面实现伪静态的完美解决方案

一般的虚拟主机都不支持urlrewrite功能,想要实现伪静态就得另外找方法。下面介绍两种IIS下wordpress利用404页面实现伪静态的方法:

方法一

$qs = $_SERVER['QUERY_STRING'];
$qsu = mb_convert_encoding("$qs","UTF-8","GBK");
$_SERVER['REQUEST_URI'] = substr($qsu, strpos($qsu, ':80')+3); //转换编码以支持中文的TAG
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include("/index.php");

方法简单,代码也比较少,可实现页面伪静态。
唯一缺点:会出现多个首页
比如:
http://www.hujuntao.com/archives/index.php
http://www.hujuntao.com/archives/archives/index.php
http://www.hujuntao.com/archives/archives/…/index.php
实际上这些地址是不存在的,但是打开上面地址你会发现显示的是首页的内容。
方法二:

header("Content-type: text/html; charset=utf-8");
$default = 'index.php';
$thisfile = '404.php';

$_SERVER['ORIG_PATH_TRANSLATED'] = str_replace($thisfile, $default, $_SERVER['ORIG_PATH_TRANSLATED']);
$_SERVER['SCRIPT_FILENAME'] = str_replace($thisfile, $default, $_SERVER['SCRIPT_FILENAME']);
$_SERVER['ORIG_PATH_INFO'] = str_replace($thisfile, $default, $_SERVER['ORIG_PATH_INFO']);
$_SERVER['SCRIPT_NAME'] = str_replace($thisfile, $default, $_SERVER['SCRIPT_NAME']);
$_SERVER['PHP_SELF'] = str_replace($thisfile, $default, $_SERVER['PHP_SELF']);
$_SERVER['PATH_INFO'] = false;

$qs =& $_SERVER['QUERY_STRING'];
$qs = mb_convert_encoding("$qs","UTF-8","GBK"); //转换编码以支持中文URL
$ru =& $_SERVER['REQUEST_URI'];
$pos = strrpos($qs, '://');
$pos = strpos($qs, '/', $pos + 4);
$_SERVER['URL'] = $ru = substr($qs, $pos);
$qs = trim(stristr($ru, '?'), '?');

// Required for WordPress 2.8+
$_SERVER['HTTP_X_ORIGINAL_URL'] = $ru;

// Fix GET vars
foreach ( $_GET as $var => $val ) {
  if ( substr($var, 0, 3) == '404') {
    if ( strstr($var, '?') ) {
      $newvar = substr($var, strpos($var, '?') + 1);
      $_GET[$newvar] = $val;
    }
    unset($_GET[$var]);
  }
  break;
}
include($default);

代码比较多,有点复杂。可实现页面伪静态,不影响正常的404页面显示,中文TAG不出现找不到的情况,不出出现多个首页。

下面教你怎么利用这段代码实现伪静态
1、首先复制上面这段代码另存为404.php保存到网站根目录
2、设置站点404错误页面。虚拟主机,现在大部分虚拟主机控制面板都支持自定义404错误页面,把地址设置为”/404.php”。自己的服务器,可以通过网站属性-自定义错误来设置404错误页面。
3、进入WordPress后台固定连接选项建立一个自定义结构。在输入框中输入您想要的结构 例如:/archives/%post_id%.html

设计蜂巢就是采用的该方法完美实现伪静态

“IIS下wordpress利用404页面实现伪静态的完美解决方案”的5个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注