点击联系:178806001 淘宝旗舰店:54321lx 我们只做第一,不做第二,点此了解我们:网络最大的创业团队!我们已经正式成为公司:南京利为汇信息技术有限公司
当前位置: 文文策划_SEO优化_网络推广外包> wordpress>正文:
 文章分类:wordpress

windows+IIS下完美设置wordpress伪静态

作者:ァζ文文ゞ 发表于:2010-06-25   阅读: 230

不得已把wordpress迁移到了wimp平台下,seo强迫的我自然要求链接友好,但IIS6没有自带rewrite功能(据说IIS7会好点,wordpress可默认支持IIS7下的URL重写)。如果用ISAPI Rewrite得自己写正则匹配,还不一定能匹配的成功,于是我找到了一个更方便的方法,堪称完美。

这个方法是通过IIS的自定义404页面实现,首先在wordpress根目录下新建一个404.php,然后把下面的代码复制到里面去:

<?php
// This is the default file for the site. Usually index.php
$default = ‘index.php’;

// The name of this file.
// Set this value for the URL in Custom Error Properties of your website in IIS.
// Goto: IIS Manager > Websites > [Site Name] > Properties > Custom Errors >
// 404 & 404;2 & 404;3 > URL (Requires a ‘/’ prefix in IIS).
$thisfile = ’404-handler.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'];
$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.php,然后访问博客主页,看看各个页面是不是可以了?

我用firebug和google webmastertools查看状态,都是200,并非404,所以不用担心google不收录这样的页面。

以上方法参见这里(英文):

http://www.ikailo.com/94/url-modrewrite-workaround-iis-60/

http://tech.einaregilsson.com/2007/07/30/pretty-wordpress-permalinks-on-iis/

(以下是写给自己看的):

这个方法对我来说还会有点问题,我配置好后发现三个博客的categary不管是否中文都可以访问,比如“http://blog.linggan.com/tag/电子商务”,但日期分类页面和分页页面均无法访问。后来发现其他人用这个方法,却可以访问日期分类。观察了下原来他们的链接里多了一个斜杠号“/”,只要我在日期分类和分页链接后加个斜杠,也可以访问了。但发现有个人的博客用http://wp.feiyan.info/page/1 这样的链接也可以访问,我意识到不是斜杠不斜杠的问题。而是自己的配置问题,突然意识到有可能是以前写的rewrite规则冲突!原来我以前写过facepk.com的rewrite规则,凡是后面是数字结尾的都会进行匹配,而免费的rewrite是全局生效的,会让所有IIS下的网站都生效,所以就导致这个404的问题了!

解决办法,去掉facepk.com的rewrite规则,facepk.com流量很低,也不需要seo,不过这里做个备份:

RewriteRule /facepk/(d{1,5})$ /facepk/facepk.asp?id=$1

RewriteRule /(d{1,5})$ /facepk.asp?id=$1

另外,之所以前面tag/xxx可以访问,也是因为以前就在httpd.conf中加了以下两句,现在可以删了!

RewriteRule /tag/(.*) /index.php?tag=$1

RewriteRule /cat/(.*) /index.php?category_name=$1

现在httpd.conf里就没有东西了。

之前我还试过用ISAPI组件的方法来设置友好链接,但一直没设置成功。

转载本博客文章请注明 转载自:文文策划 本文链接:http://www.zwnow.com/2010_06_559.html

 

随机日志

    文文策划
    赶快留言冒泡
    • 评论 (2)
    • 引用通告 (0)
    目前还没有任何Trackbacks和Pingbacks.
    吐个泡浮上去.
    订阅本站内容

    RSS Feed Subscribe me via Rss Feed. Choose a Reader: 鲜果, Google Reader, 抓虾, 有道, or E-mail...