IIS 下 WordPress 站点的固定链接格式设置说明教程。在 Windows 操所系统上安装部署 WordPress ,本篇为 Windows Server 上安装部署 WordPress(5):IIS 下 WordPress 站点的固定 URL 链接格式设置。由于篇幅太长,所以把整个在 Windows 上安装部署 WordPress 分成了几篇来写:
- Windows Server 上安装部署 WordPress(1):概要
- Windows Server 上安装部署 WordPress(2):安装 MySQL
- Windows Server 上安装部署 WordPress(3):在 IIS上安装配置 PHP 支持
- Windows Server 上安装部署 WordPress(4):在 IIS上部署 WordPress 站点
- Windows Server 上安装部署 WordPress(5):IIS 下 WordPress 站点的固定 URL 链接格式设置
WordPress 初始化安装完成后,默认的 Url 链接格式是:https://blog.codeusing.com/index.php/%year%/%monthnum%/%day%/%postname%/,这是一种“比较好的链接”,但不是“漂亮的链接”、“友好的链接”。最常见、最通用的漂亮友好链接格式如下:
#1 包含分类目录、Url 别名: https://blog.codeusing.com/category/post-name/ #2 只包含 Url 别名 https://blog.codeusing.com/post-name #3 包含年、月、日、Url 别名: http://example.com/year/month/day/post-name
与漂亮友好的链接格式相比,WordPress 默认“比较好的链接”格式多了 index.php,一般网站都不采用这种格式。通常网站会尽量采用简短、漂亮,对用户、搜索引擎友好的 URL 链接格式。
WordPress.org 官方关于固定链接的说明文档:
- 中文:使用固定链接
- 英文:Using Permalinks
WordPress 固定链接设置
登录 WordPress 后台,点 Setting(设置) –> Permalink(固定链接)导航菜单进入固定链接设置界面,可以随意设置想要的链接格式。
IIS WordPress 站点固定链接格式支持
如果 WordPress 是部署在 IIS 上的,想要支持友好的 Url 链接格式,需要安装 URL Rewrite 模块支持。如果没有安装 IIS URL Rewrite,访问没有 “index.php” 格式的文章地址,如 http://demo.wordpress.com/hello-world,会报404错误:
下载 IIS URL Rewrite 模块:
- IIS Url Rewrite 模块微软官方下载页面地址: https://www.iis.net/downloads/microsoft/url-rewrite。
- 支持的 IIS 版本:IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10。–目前最新版本的 IIS 是 10。
打开下载页面后,滚动到页面最下边,可以看到各语言的 MSI 安装包下载,选择需要的下载即可。
安装 IIS URL Rewrite 模块:
1. 双击下载好的 .msi 文件,运行安装。
2. 安装完成后,打开 IIS,在服务器 Features View(功能视图),可以看到多了一个 URL Rewrite。
添加 URL 路由规则
上一步安装完 IIS URL Rewrite 后,你如果测试浏览 http://demo.wordpress.com/hello-world,应该还是会报 404 错误。原因是没有添加路由规则。
在 WordPress 网站根目录下,用文本编辑器打开 web.config 文件,在 configuration/system.webServer xml 配置节点下添加 rewrite 规则:
<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/{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>
再次测试浏览 http://demo.wordpress.com/hello-world,可以正常访问。搞定!