如果服务器支持伪静态的话,就直接在服务器设置不用配置问题和代码

2.postname是中文的时候,会报错404找不到页面。这个时候不是说文章地址不对。

是wp没法给你解析,这时候,如果你重新编辑一下url就可以找到这个文章了。

这地方,就需要一个插件:

WordPress 中文Url自动转为英文Url的插件: WP Slug Translate 。

直接搜索,在线安装就可以。选择配置成中文翻译成英文。

IT分享Wordpress设置iis7伪静态,中文标题伪静态,wp中文标题伪静态

注意:使用该插件后,新发布的文章都会自动翻译成英文url,但是已存在的不会翻译。

你可以通过编辑或者全选一起更新一下就行了。

另一种解决办法(通用方法)

具体的操作就是打开wordpress目录下的wp-includes文件夹,然后修改classes.php这个文件的两句代码:
首先将:

 代码如下
1 $pathinfo = $_SERVER['PATH_INFO'];
上面这句代码替换成下面的这句代码:
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], “UTF-8″, “GBK”);

然后再将:

 代码如下
1 $req_uri = $_SERVER['REQUEST_URI'];

上面这句代码替换成下面的这句代码

 代码如下
1 $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], “UTF-8″, “GBK”);

这种直接修改文件的有一定的风险,为了避免修改失误对网站带来破坏,最好事先备份classes.php这个文件,或者我们直接下载wordpress安装包,修改完之后再上传到服务器上

下面以西部数码主机为例:(apache)

进入控制面板,点击 ISAPI 筛选器–点击开启自定义URL静态化支持,这个时候通过ftp软件进入网站目录–再打开/others/discuz/httpd.conf文件

在httpd.conf里面加入以下规则。

 代码如下
1 # Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
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]

有些主机商自定义设置isapi筛选器需要自己上传Rewrite的dll文件(下载见最下面),上传搞定之后,可以将以上代码用记事本保存下来,注意要在文件里面,补充以下内容在以上规则前面

 代码如下
1 [ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32

再把文件后改为httpd.ini然后上传到网站根目录即可。

2.不支持urlwrite

这种情况下可以通过设置404页面的方法实现wordpress在win主机下的伪静态。

新建一个记事本,在里面写入下面代码保存,重新命名为404.php。上传到程序根目录。

代码:

 代码如下
1 <?php
$qs = $_SERVER['QUERY_STRING'];
$_SERVER['REQUEST_URI'] = substr($qs, strpos($qs, ‘:80′)+3);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include(‘index.php’);
?>

进入网站后台管理开启动态404页。

第二:wordpress中文标签问题

有的时候以上设置会导致中文标签和一些相关地方的tags等无法找到,解决办法是查找wp-includes/classes-wp.php(wp3.2.1其他版本自己找一下)中如下代码:

 代码如下
1 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'];
修改为:
2 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’);

最后提供两个文件的下载第一个如果是西数主机在开启isapi自定义之后可以把这个文件直接上传代替以前那个。第二个文件是放到程序根目录的时候的文件。

iis7下解决方法有点不一样

将下列代码加入到web目录下的web.config文件的之后即可。

 代码如下
1 <rewrite>
<rules>
<clear />
<rule name=”wordpress2.7″ stopProcessing=”true”>
<match url=”.*” />
<conditions logicalGrouping=”MatchAll”>
<add input=”{REQUEST_FILENAME}” matchType=”IsFile” negate=”true” />
<add input=”{REQUEST_FILENAME}” matchType=”IsDirectory” negate=”true” />
</conditions>
<action type=”Rewrite” url=”index.php” />
</rule>
<rule name=”chinese tag” stopProcessing=”true”>
<match url=”/tag/(.*)” />
<conditions logicalGrouping=”MatchAll” />
<action type=”Rewrite” url=”/index.php?tag={R:1}” />
</rule>
</rules>
</rewrite>