WordPress中文Tag伪静态处理方法

过去Godaddy会给每个在Godaddy注册的域名提供一个10G的免费主机。使用的时候可以选择免费的Windows主机或者Linux主机,Godaddy告诉我们,这个赠送的免费主机是有广告的。奇怪的是当我选择Windows主机,使用IIS7的时候并没有显示出广告。所以我就用Godaddy的这个主机搭建了一个WordPress,其他的一切都很顺利,但是唯独在设置固定链接完成伪静态设置的时候遇到了问题。即使我们根据WordPres的要求设置了正确的Web.config配置文件,主机在显示中文的Tag的时候出现了问题:既无法识别中文Tag,显示出想要的文档。

对于这个问题我找了很多办法,有的方法通过修改WordPress源文件,不将WordPress的Tag显示为

http://dingjie.net/blog/tag/新浪微博/

而还是显示为

http://dingjie.net/blog/?tag=新浪微博

来解决,这样虽然能够解决问题,但是在某些时候却会产生问题而使地址无法显示。比如如果你的一个Tag下拥有的文章数超过了一页能够显示的数量,WordPress便会自动分页,在以上这种修改方式中就会显示为

http://dingjie.net/blog/?tag=新浪微博/page/2

我们知道这样的地址也是无法传递正确的指令给WordPress,让它显示正确的页面的。

于是我就在Google上搜索,终于搜索到了一个解决办法。如下:具体也可以参考这篇文章(http://blog.creke.net/702.html)

首先新建一个名为:chineseurl.php的文件并上传到根目录,内容如下(url):

< ?php

// IIS Mod-Rewrite
if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
}
// IIS Isapi_Rewrite
else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
}
else
{
// Use ORIG_PATH_INFO if there is no PATH_INFO
if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];

// Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
if ( isset($_SERVER['PATH_INFO']) ) {
if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
else
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
}

// Append the query string if it exists and isn't null
if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
}
}

require("index.php");

?>

然后修改根目录下的“web.config”文件,添加或者修改Url重写规则如下。也可以直接下载这个文件覆盖来解决问题。

<rule name="Chinese Tag and Category for WordPress" stopProcessing="true">
          <match url="^(tag|category)/(.*)$" />
          <action type="Rewrite" url="chineseurl.php"/>
        </rule>
        <rule name="wordpress" patternSyntax="Wildcard">
          <match url="*" />
            <conditions>
              <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>

需要注意的是,如果你的Wordpress不是装在根目录,则需要更改“<match url=”^(tag|category)/(.*)$”/> ”为“<match url=”^你的目录/(tag|category)/(.*)$” /> ”。如果你把默认的标签和目录的地址改了,则更改这句话里面的对应内容即可。

 

 

“WordPress中文Tag伪静态处理方法”的一个回复

  1. 你好站长,尝试你这个方法还是不行。如果你愿意请教我如何正确的处理这个问题,谢谢。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注