對(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>
效果如下:
如果 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í)影響,推薦使用。