IIS下的实现wordpress的永久固定链接

因为要迁移wordpress到IIS服务器上面,所以就在网上找了一些方法,开始以为和Linux上面一样的,配置PHP就OK了,但是发现不能访问wprdpress的永久固定链接,因为链接的形式是以.html结尾的,所以IIS不能识别,怎么办了?最后找到一个IIS插件,WordPress URL Rewrite,这个插件还不错,可以实现大部分的URL永久访问,但是问题来了,貌似不能访问文章页面,怎么了?原来还有404的方法,这个就可以解决中文URL和.html类的永久固定链接的访问了。

一、Windows2003 IIS6下配置WordPress伪静态方法:

1.下载WordPress URL Rewrite组件

  下载地址:http://www.binaryfortress.com/wordpress-url-rewrite

  WordPress URL Rewrite主要功能与特色:完全无需人工干预,全自动重写URL,只需要在后台设置好固定链接(Permalinks)形式,就能直接使用,就像linux下用htaccess一样。可以使用在一级目录和子目录,也可以排除不需要重写的目录。这个非常方便,对于某些目录不需要URL重写的就将其排除,不会造成无法访问。因为全自动,所以免去了在写重写规则时候遇到的规则重复造成部分目录和文件无法实现的情况。

  2.安装WordPress URL Rewrite

  把下载的压缩包解压到任何地方,只要保证WordPressURLRewrite.ini和WordPressURLRewrite32.dll(32位版本,64位版本对应为64.dll)在同一文件夹下就可以了。

  然后打开WordPressURLRewrite.ini设置你的博客目录,以及需要排除的目录,Readme.txt里有详细说明,这里就不细说了。

  接下来,在IIS中选择相应的站点,在ISAPI筛选器中加载WordPressURLRewrite32.dll就可以了,加载完重启IIS或者停止网站再启动即可。

注意:要给dll所在的目录加上IIS_WPG组的写入权限,否则无法加载对应dll文件。

二、利用404页面实现伪静态

首先需要编写404.php页面,上传404.php文件放到wordpress根目录下,代码如下:

<?php
if (strpos($_SERVER["SERVER_SOFTWARE"], "Apache") === 0){
 // Apache
 // REQUEST_URI形如"/non-exist-page.html"
 $uri = $_SERVER['REQUEST_URI'];
}
else{
 // IIS
 // $_SERVER['QUERY_STRING']形如"404;http://localhost/non-exist-page.html"
 $qstr = $_SERVER['QUERY_STRING'];
 $_SERVER['QUERY_STRING'] = "";
 $pos = strrpos($qstr, '://');
 $pos = strpos($qstr, '/', $pos + 4);
 $uri = substr($qstr, $pos);
}
$_SERVER['REQUEST_URI'] = $uri;
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
// 解决重定向的页面中的页面导航问题
$_SERVER['SCRIPT_NAME'] = $_SERVER['PATH_INFO'];
include('index.php');
?>

然 后需要设置IIS的404页面到wordpress根目录下的404.php。IIS下的设置步骤为:Internet信息服务窗口->右键网站或 wordpress目录->属性->自定义错误->选中404->编辑属性…->消息类型选择url->输入 /404.php(绝对路径)。

三、解决中文404找不到页面的问题

1.打开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 = 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']);

好了,就这样,我们的网站就可以访问了,至于SEO和404页面方法的问题,这个就留给博友们去研究吧。目前TC没有多少时间去研究了,如果有时间会继续写一篇关于404页面的影响的。目前还没有发现什么问题,至于收录就期待吧。



本文固定链接: http://20tc.com/iis-wordpress-link.html | TC的博客

该日志由 TC 于2012年09月10日发表在 网站建设 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: IIS下的实现wordpress的永久固定链接 | TC的博客
关键字: ,

IIS下的实现wordpress的永久固定链接:目前有3 条留言

  1. 板凳
    打折网 China Google Chrome Windows :

    wordpress还是用Linux环境比较好,windows折腾起来费神

    2012-11-05 下午 6:01 [回复]
    • TC China Google Chrome Windows :

      嗯,PHP的在linux下发挥的性能高

      2012-12-06 下午 3:45 [回复]
  2. 沙发
    板凳 China Mozilla Firefox Windows :

    wordpress还是用linux+apache方便,不用折腾

    2012-09-12 下午 7:28 [回复]

发表评论


*

快捷键:Ctrl+Enter

无觅相关文章插件,快速提升流量