正在加载...

wordpress 在iis7下rewrite完美解决

in 沉思录 | 2 条评论

解决中文路径问题

wordpress设定Permalink后一个最大的问题是中文不正常,主要原因是IIS解释路径是GBK编码,转给wordpress按UTF-8取值就不对了。

解决办法

打开wp-includes/classes.php文件,找到

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

替换为:

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

index.php模式

wordpress通过index.php实现的友好路径已经很不错了,你在Permalink Settings直接设置就行了..这个模式在IIS7下面很正常

如果你实在是一个完美主义者请继续往下

IIS7 rewrite组件模式

下载组件和相关说明参见:

Microsoft URL Rewrite Module for IIS 7.0 (x86)

Using URL Rewrite Module

如果您时间有限,请看以下简单安装

1 下载安装..这个必须的,安装完,你会看到IIS管理器中多了个URL Rewrite功能,但我们不用管它。

2 打开wordpress目录中的web.config,在system.webServer element中添加

<rewrite>
<rules>
<rule name="Main Rule" 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>
</rules>
</rewrite>

3 然后你就可以在Permalink Settings去掉看不顺眼的index.php了

例子:www.gouwu123.com

转自:xmao’s blog

关键字: ,,,