Windows IIS 7.5 WordPress偽靜態(tài)中文鏈接404錯(cuò)誤解決辦法

對(duì)于WordPress建站,雖然我們一直推薦用戶使用linux系統(tǒng),但是無可避免的依然會(huì)有很多用戶由于種種原因選擇了windows系統(tǒng),并且也會(huì)經(jīng)常有用戶遇到中文鏈接404錯(cuò)誤的問題,現(xiàn)在我們針對(duì)Windows IIS 7.5下的中文鏈接(比如標(biāo)簽頁)404錯(cuò)誤提供一種解決方案。

首先,我們?cè)赪ordPress安裝目錄下,新建一個(gè)“index2.php”文件,內(nèi)容如下:

<?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中新增一條規(guī)則,并將此規(guī)則置于規(guī)則集合的頂部:

<rule name="ChineseURL" stopProcessing="true">
 <match url="/(tag|category)/(.*)" />
 <action type="Rewrite" url="index2.php" />
</rule>

效果如下:

1508823293711.jpg

如果 WordPress 不是裝在根目錄,則需要更改“<match url="^(tag|category)/(.*)$" />”為“<match url="^安裝目錄/(tag|category)/(.*)$" />”。如果在固定鏈接設(shè)置里把默認(rèn)的標(biāo)簽前綴和分類目錄前綴(tag 和 category)改了,則更改這句里的對(duì)應(yīng)內(nèi)容即可。

以上方法只針對(duì)標(biāo)簽和分類里面的中文鏈接,如果您需要對(duì)網(wǎng)站的全部中文鏈接(比如文章、頁面等)進(jìn)行轉(zhuǎn)化支持,那么可以不用添加最后一步的web.config規(guī)則,只需要直接編輯web.config,將上圖里面的<action type="Rewrite" url="index.php" />改成<action type="Rewrite" url="index2.php" />即可。

由于此方法是新建index2.php文件,并配合偽靜態(tài)規(guī)則實(shí)現(xiàn),所以不受WordPress更新升級(jí)影響,推薦使用。