保定网站建设,网站推广,网站优化服务,保定专业的PHP网站制作机构!

Wordpress在Win-iis中的完美rewrite实现方法

发表于:2008年06月25日 10时  作者:dx_andy

要说Wordpress中的完美工作环境,当然要属于Lamp平台,或是稍微逊色一点的Wamp平台;但是由于某此特殊原因,我们没有选择它们,而是选择了Windows+iis+MySql+Php,我把它统称为:Wimp平台。

这次我要说的就是如何在Wimp平台中实现Wordpress的完美URL结构!

例:http://www.phplamp.org/2008/06/wp-iis-isapi/ (本文的URL)

用过Wordpress的应该都知道,实现这样的URL只需要在后台中:Settings->permalinks,然后设置成自己中意的URL就行了。但是前提是您的空间支持 rewrite || 您的虚拟主机支持 .htaccess。Lamp,Wamp中只要开启加载mod_rewrite模块就行了。但是Wimp却不是这么简单的,它如果想实现rewrite功能只能借助于第三方的ISAPI组件。

如现在比较火的:http://www.helicontech.com/isapi_rewrite/ 这是一个国外的组织专门为IIS写的ISAPI Rewrite组件,非常类似于Apache的mod_rewrite。有免费版与收费版!很多网友说实现WP在IIS中的rewrite功能只需要下载一个它的组件就OK了。我在本地测试了好一阵子,没有成功,而且用它的比较麻烦,还要自己写rewrite规则!(没有成功可能是我没写正确规则,汗!)。最后我放弃了它……

下面说一下本博客中(phplamp.org)用到的ISAPI组件吧:

wp-url-rewriting.dll 下载地址:http://code.google.com/p/wp-url-rewriting-on-iis/downloads/list

这是位好心的牛人专门为工作于iiS中的WP写的ISAPI rewrite组件,用它您根本就不用写rewrite规则,您只需要将其加载到您的ISAPI中,然后进wp后台定义自己的permalinks即可。 假如你用的是虚拟主机的话,您可以联系您的空间商让其为您添加上这个组件。从此您的WP也可以完美rewrite了。

注意本文还没有完呢!

当我们定义好permalinks后,可能您会发现,我们点击中文标量的文章链接时说找不到网址。

例:http://www.phplamp.org/2008/06/php%e4%b8%ad%e7%9a%84%e6%96%87%e7%ab%a0/

这是因为:WP的编码为utf-8,而这篇文章的URL中Slug(上链接红色部分)编码为gbk。然后WP取得文章Slug后,通过它来查找文章就会找不到!因为编码不同呀。

更改方法:

wp-include/classes.php中(44-50行)

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'];

替换为下(转换$_SERVER['PATH_INFO']和$_SERVER['REQUEST_URI']的编码):

if ( isset($_SERVER['PATH_INFO']) )
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], ‘utf-8′, ‘GBK’);
else
$pathinfo = ”;
$pathinfo_array = explode(‘?’, $pathinfo);
$pathinfo = str_replace(“%”, “%25″, $pathinfo_array[0]);
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], ‘utf-8′, ‘GBK’);

这个操作的意思就是:将Slug的编码由GBK转换为utf-8(您也可以用iconv,或是其它的函数来代替mb_convert_encoding)。

《-结束-》

 订阅“PHPLAMP博客”方便及时获取网站内容

PHPLAMP博客是专注于网站建设,搜索引擎研究,网站推广,网站优化的IT博客。

有关, , 的相关文章:

“Wordpress在Win-iis中的完美rewrite实现方法” 共有6篇评论

  1. Beach says:

    非常精彩的文章,我转载了,告知。
    表示感谢!

  2. admin says:

    欢迎大学转载本博客的文章!

  3. 为了让这个新换上的WordPree Blog的URL地址能对搜索引擎友好一点,想尽一切办法在折腾,ISAPI、404、Index.php都尝试个遍,就是没有一个让我满意的,弄完了不是缺胳膊就是少腿,有些功能有等于没有,晕死~~~差点想发脾气的了,最后还是给找到解决办法了,参看这里的文章,就可以在Windows下为WordPress伪静态且功能正常了。

  4. 逗逗 says:

    还是没成功.快被折腾死了.

  5. [...]       不过这么好的方法,我还是不能私自藏起来,决定放在这里与朋友们分享,特别指出,以下为转载,原地址:http://www.phplamp.org/2008/06/wp-iis-isapi/ [...]

  6. [...] 此法详见一位网友的Wordpress在Win-iis中的完美rewrite实现方法一文,但很遗憾的是,按照他的方法,我进行了详细的设置,而且又让空间商的技术支持帮忙启用了Rewrite模块,加载了ISAPI Rewrite组件wp-url-rewriting.dll,可终究还是没有成功,伪静态仍然未能实现。 [...]

发表一下您对本文的意见