IIS环境下wordpress中永久链接去掉index.php

最近经常有同学问我Wordpress上设置永久链接前面的index.php怎么去掉。这其实和服务器有关,IIS 和Apache 下,情况不大一样。一般出现index.php 主要是iis这边设置的问题。网上找了一些资料,以下这篇文章测试可用。

=======================

因为服务器是使用的Windows2003+IIS,想摆脱Wordpress永久链接前面的index.php不像在APACHE下那么容易。只好GOOGLE+BAIDU,输入词条,搜到N多关于WP永久链接的文章。

最后发现两种已成功实现的方案:

第一种方案:

不需要第三方插件cos-html-cache支持,利用服务器有自定义404错误页面的功能解决问题,但前提是你的服务器或者主机有自定义404错误页面的功能。如果是服务器那肯定可以支持,如果是虚拟主机,需你的服务器供应商提供自定义404错误页面选项。你只需创建一个404错误页面,并且写入下列几行代码即可简单优雅的实现无插件完美支持windows iis主机的永久固定链接的伪静态化地址格式。

具体设置步骤:

1.用DW新建一个PHP文档,并且页面属性里面把编码设置成UTF-8,在里面写入下面代码,保存,命名为404.php。将404.php上传到网站根目录。

<?php
header("HTTP/1.1 200 OK");
$ori_qs = $_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');
?>

我开始从网上复制该段代码使用的时候发现出现500错误,仔细一看原来是大家转载代码的时候都没有把代码里面错误的单引号修正过来,网上流传的这段代码里面不少单引号都是中文全角单引号,需要改成英文半角的才可以。上面的我已经改过了。大家直接复制即可!

2.设置404自定义错误指向404.php,一般来说,绝大多数服务器控制面板均提供该选项。

3.进入wordpress管理后台,设置(Options)-永久链接(Permalinks),你就当自己的主机是linux主机使好了,任意、随便设置自己喜欢的伪静态地址格式及静态地址后缀。
例如:
/y%year%/%post_id%.html
/%year%/%monthnum%/%post_id%/
/%year%/%monthnum%/%postname%.html
我用的格式是:/%year%/%monthnum%/%postname%/

第二种方案:

无Rewrite用cos-html-cache实现静态化
要求:使用cos-html-cache插件
具体下载,设置步骤和使用方法请查看插件作者的说明:cos-html-cache插件链接

用起来有点麻烦,我还是选择了第一种 :razz:

看来大家有点小麻烦,可能我也不知道是怎么回事。我把我正常用的404文件打包了,大家可以下载了试试!【404.PHP下载

转自:http://www.ossi.cn/2009-02/iis-wordpress-indexphp

《IIS环境下wordpress中永久链接去掉index.php》有一个想法

发表评论

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