在之前的文章中我介绍了如何在Windows服务器中搭建WordPress,文章详见:Windows服务器搭建WordPress网站完整图文教程(包括IIS、PHP、MySQL、WordPress等设置)。这里我分享下我如何完成URL地址重写。
一:📝为什么要使用URL地址重写?
- URL地址会更加美观,未重写之前后缀是带.php的,因为WordPress是基于PHP语言开发的,所以有后缀,重写后就变成:.html。
- 在SEO优化和用户体验层面,简洁的URL结构(如
/post-name/
)远比动态参数(?p=123
)更具优势。 - 方便wordpress后台设置url地址。
二:📋操作步骤
1、服务器上已搭建好wordpress,并能正常的访问。
2、服务器上安装“ URL Rewrite”模块 ,点击下载,进入页面后拖动到最下面,下载中间简体版本(下图)。下载完成后直接按照安装即可。

3、在网站的根目录增加一个“index2.php”的文件,复制下面完整的内容即可。
<?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");
?>
4、网站根目录下面新增或修改“web.config”文件,完整内容见下面代码。这里主要的目的就是将用户反问的url地址解析到正确的php文件上。如果没有web.config文件则新建一个即可,下面的的“403”错误页面配置,则是自己加的一个页面,显示错误就可以了。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<defaultDocument enabled="true">
<files>
<remove value="Default.asp" />
<remove value="index.htm" />
<remove value="index.html" />
<remove value="Default.htm" />
<remove value="iisstart.htm" />
<remove value="default.aspx" />
<add value="index.php" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="ChineseURL" stopProcessing="true">
<match url="archives/(tag|category|special)/(.*)" />
<action type="Rewrite" url="index2.php" />
</rule>
<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/{R:0}" />
</rule>
<rule name="WordPress: demo.wordpress.com" 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>
</rules>
</rewrite>
<httpErrors>
<remove statusCode="403" subStatusCode="-1" />
<error statusCode="403" prefixLanguageFilePath="" path="/ErroPage/403.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
5、设置wordpress的“固定链接”,具体见下图,“/archives/%postname%.html”

6、完成以上步骤,则设置流程完成,可以访问文章链接查看了,成功的话的话后缀应该是.html的。
以上是自己个人经验总结,如有不正之处望见谅,谢谢!
发布者:IT柚子,转转请注明出处:https://ityouzi.com/archives/windowsp-wordpress-urlrewrite.html