wordpress博客二级目录伪静态去掉index.php

实现wordpress博客伪静态去掉index.php,首先要搞清楚下面几个问题,不然怎么搞都是错的。
linux主机修改比较方便,买的人多数都懂,网上也有很多方法,本文主要讲windows主机设置。
认真看完文章一定可以搞定,有点耐心,我当时就费了很多时间,所以写下来帮大家省时间。

对号入座
1、首先需要搞清楚主机类型。目前市面上有两种主机类型,window主机以及linux主机,不知道的可以问主机商。
2、win主机的用户,搞清楚iis版本,目前主流的有iis6以及iis7,不知道的可以问主机商。
3、是根目录安装博客还是二级目录安装博客,这个是路径上的差别
4、修改博客固定链接(wordpress举例在“设置-固定链接-自定义结构”)
5、根据自己的服务器版本以及主机类型修改。

解决思路

iis7服务器 解决思路:
1、设定博客固定链接
2、创建web.config文件上传博客目录

iis6服务器 解决思路一:
1、设定博客固定链接
2、创建httpd.ini文件上传博客目录
iis6服务器 解决思路一:
3、服务器后台指定404为404.php页面
4、上传404.php页面

类型一:windows主机,iis7,根目录
解决方案:手动编辑创建一个文档重命名为web.config,内容可以复制下面代码,上传至根目录即可。
复制以下代码
















类型二:windows主机,iis7,二级目录blog
解决方案:
手动编辑创建一个文档重命名为web.config,内容可以复制下面代码,上传至博客二级目录即可。
因为二级目录为blog,代码name=”blog”,如果是别的二级目录名,查找替换即可。

复制以下代码



 
 
 
 
 
 
 
 
 
 
 
 
 

类型三:windows主机,iis6,根目录
解决方案:
手动编辑创建一个文档重命名为httpd.ini,内容可以复制下面代码,上传至根目录即可。

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# wordpress 伪静态规则
# For tag(中文标签以及标签翻页的规则)
RewriteRule /tag/(.*)/page/(d+)$ /index.php?tag=$1&paged=$2
RewriteRule /tag/(.+)$ /index.php?tag=$1
# For category(中文分类以及分类翻页的规则)
RewriteRule /category/(.*)/page/(d+)$ /index.php?category_name=$1&paged=$2
RewriteRule /category/(.*) /index.php?category_name=$1
# For sitemapxml
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]

类型四:windows主机,iis6,二级目录
解决方案:
手动编辑创建一个文档重命名为httpd.ini,内容可以复制下面代码,上传至博客二级目录即可。
因为二级目录为blog,所以里面的路径都加了 “blog”,如果是别的二级目录,查找替换即可。

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteRule /blog/sitemap.xml /blog/sitemap.xml [L]
RewriteRule /blog/favicon.ico /blog/favicon.ico [L]
# For tag 
RewriteRule /blog/tag/(.*)/page/(d+)$ /blog/index.php?tag=$1&paged=$2
RewriteRule /blog/tag/(.+)$ /blog/index.php?tag=$1
# For category 
RewriteRule /blog/category/(.*)/page/(d+)$ /blog/index.php?category_name=$1&paged=$2
RewriteRule /blog/category/(.*) /blog/index.php?category_name=$1
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /blog/wp-(.*) /blog/wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/blog/$ /blog/index.php [L]
RewriteRule /blog/(.*) /blog/index.php/$1 [L]
#For page
RewriteRule /blog/page/(.*)/?s=(.*) /blog/index.php?s=$2&paged=$1
RewriteRule /blog/page/(.*) /blog/index.php?paged=$1

如果是iis6服务器版本设置后页面无法访问的话,把这个404上传至Ftp根目录。
注意:是上传至根目录,无论你把博客放在二级目录还是根目录。

类型四:windows主机,iis6,补刀解决方案:
手动编辑创建一个文档重命名为404.php,内容可以复制下面代码,上传至Ftp根目录即可。

 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);
?>