这个过程的核心是使用 IIS URL Rewrite Module,它是一个功能强大的 URL 重写组件,类似于 Apache 的 mod_rewrite,对于 DedeCMS,我们主要用它来实现将动态的 php URL 转换成更美观、更利于 SEO 的静态化或伪静态 URL。

(图片来源网络,侵删)
第一步:确认并安装 IIS URL Rewrite Module
如果你的 IIS 7.5 服务器上还没有安装这个模块,需要先进行安装。
-
下载模块:
- 访问微软官方下载页面:Microsoft URL Rewrite Module
- 根据你的服务器系统(32位或64位)下载对应的版本,对于现在的服务器,几乎都是 64 位。
-
安装模块:
- 下载后是一个
msi安装包,直接双击运行。 - 按照安装向导的提示点击“下一步”即可完成安装,安装过程会自动将模块集成到 IIS 管理器中。
- 下载后是一个
-
验证安装:
(图片来源网络,侵删)- 打开 IIS 管理器。
- 在左侧的“管理”区域,你应该能看到一个名为 “URL 重写” 的图标,如果能看到,说明安装成功。
第二步:配置 DedeCMS 的后台设置
在配置 IIS 之前,必须先登录 DedeCMS 后台,开启并设置好伪静态功能。
-
登录 DedeCMS 后台:
http://你的域名/dede/ -
进入系统基本参数设置:
- 在左侧菜单栏找到 “系统” -> “系统基本参数”。
-
设置核心选项:
- 找到 “是否使用伪静态” 选项,将其设置为 “是”。
- 找到 “网站HTML设置” 部分,确保 “生成目录式首页” 是 “是”,这有助于后续的规则匹配。
-
保存设置:
点击页面底部的“保存”按钮。
-
生成栏目和文章:
- 为了让伪静态规则生效,你需要重新生成一下网站的栏目和文章HTML。
- 在后台依次进入 “生成” -> “一键更新网站” -> “更新栏目HTML” 和 “更新文档HTML”。
第三步:配置 IIS URL Rewrite 规则
这是最关键的一步,我们需要将 DedeCMS 的伪静态规则文件导入到 IIS 中。
-
获取 DedeCMS 规则文件:
- DedeCMS 程序包中已经包含了针对不同服务器的伪静态规则文件。
- 在你的网站根目录下,找到
web.config文件,如果不存在,你需要自己创建一个。 - DedeCMS 在安装时,通常会在
/data/目录下生成一个名为rewrite_iis.ini的文件,里面包含了 IIS 的规则,你可以打开这个文件,将里面的规则复制到web.config中。
-
创建或编辑
web.config文件:- 在你的网站根目录(
D:\wwwroot\mysite)下,新建一个名为web.config的文本文件。 - 用记事本或代码编辑器(如 VS Code)打开它,并粘贴以下内容,这是一个非常完整和常用的 DedeCMS (V5.7) 的 IIS URL Rewrite 规则。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <!-- 首页规则 --> <rule name="Homepage" stopProcessing="true"> <match url="^index\.html$" ignoreCase="false" /> <action type="None" /> </rule> <!-- 栏目目录规则 --> <rule name="Category Index" stopProcessing="true"> <match url="^category/([a-zA-Z0-9_-]+)/([0-9]+)\.html$" ignoreCase="false" /> <action type="Rewrite" url="category\.php\?/{1}/{2}" /> </rule> <rule name="Category" stopProcessing="true"> <match url="^category/([a-zA-Z0-9_-]+)/([0-9]+)/([0-9]+)\.html$" ignoreCase="false" /> <action type="Rewrite" url="category\.php\?/{1}/{2}/{3}" /> </rule> <!-- 文章内容页规则 --> <rule name="Article" stopProcessing="true"> <match url="^([a-zA-Z0-9_-]+)/([0-9]+)\.html$" ignoreCase="false" /> <action type="Rewrite" url="{1}/view\.php\?aid={2}" /> </rule> <!-- 搜索页规则 --> <rule name="Search" stopProcessing="true"> <match url="^search\.html$" ignoreCase="false" /> <action type="Rewrite" url="search\.php" /> </rule> <rule name="Search Keywords" stopProcessing="true"> <match url="^search\.html\?keyword=(.+)$" ignoreCase="false" /> <action type="Rewrite" url="search\.php\?keyword={R:1}" /> </rule> <!-- 标签列表页规则 --> <rule name="Tag" stopProcessing="true"> <match url="^tags\.html$" ignoreCase="false" /> <action type="Rewrite" url="tags\.php" /> </rule> <rule name="Tag Name" stopProcessing="true"> <match url="^tags/([^/]+)\.html$" ignoreCase="false" /> <action type="Rewrite" url="tags\.php\?/{1}" /> </rule> <!-- 自定义页面规则 --> <rule name="Custom Page" stopProcessing="true"> <match url="^([a-zA-Z0-9_-]+)\.html$" ignoreCase="false" /> <action type="Rewrite" url="{1}/index\.php" /> </rule> <!-- 默认规则,防止重写静态文件和图片等 --> <rule name="Static Files" stopProcessing="true"> <match url="^(.*)\.(css|js|jpg|jpeg|png|gif|bmp|ico|swf|eot|svg|ttf|woff|woff2|mp3|wav|zip|rar)$" ignoreCase="true" /> <action type="None" /> </rule> </rules> </rewrite> </system.webServer> </configuration>注意:上面的规则是通用模板,如果你的 DedeCMS 版本或自定义页面较多,可能需要根据你的实际需求调整规则,最准确的规则来源是 DedeCMS 官方文档或你所用版本的
rewrite_iis.ini文件。 - 在你的网站根目录(
-
保存
web.config文件:- 将文件保存到你的网站根目录下,确保文件编码为 UTF-8(无 BOM),这是 IIS 推荐的编码方式,可以避免中文乱码问题。
第四步:验证和测试
完成以上配置后,就可以进行测试了。
-
重启 IIS 应用程序池:
- 为了确保新规则生效,建议重启一下你的网站对应的应用程序池。
- 在 IIS 管理器中,点击左侧的“应用程序池”。
- 找到你的网站对应的应用程序池,右键点击,选择“停止”,然后再右键点击,选择“启动”,或者直接选择“回收”。
-
清除浏览器缓存:
- 按
Ctrl + F5强制刷新浏览器,清除本地缓存。
- 按
-
访问测试:
- 在浏览器中访问你的网站首页、栏目页、文章页等。
- 检查浏览器地址栏:URL 应该已经变成了你设置的伪静态格式(如
http://你的域名/article/123.html)。 - 检查页面是否正常显示、图片、样式等都能正确加载。
- 检查 IIS 重写日志(可选,用于排错):
- 在 IIS 管理器中,双击“URL 重写”图标。
- 在右侧的“操作”面板中,点击“查看请求的跟踪”。
- 这会打开一个跟踪器窗口,当你访问网站时,可以看到 URL 是如何被匹配和重写的,对于排查规则错误非常有帮助。
常见问题与解决方法
- 问题1:404 - 文件或目录未找到。
