如何在IIS中将旧链接及不存在的URL重定向至指定地址
修复IIS URL重定向规则的问题
原规则的问题分析
<match url>中包含了域名domain.com,这是错误的——IIS URL重写模块的match url仅匹配域名之后的路径部分,不包含域名本身。- 使用了
Rewrite类型的action,但你需要的是让浏览器地址栏更新的重定向操作,而非服务器内部重写。 - 目标URL不符合你的需求,且未使用更灵活的相对路径写法。
正确的重定向规则
将原规则替换为以下配置:
<rule name="SP" stopProcessing="true"> <match url="^Product/PoductDetails/bitouyin/probiotin$" /> <action type="Redirect" url="/Product/bitouyin/probiotin" redirectType="Permanent" /> </rule>
规则说明
<match url>:仅保留路径部分^Product/PoductDetails/bitouyin/probiotin$,^和$确保完全匹配该特定路径,避免误匹配其他相似URL。<action type="Redirect">:明确使用重定向类型,让浏览器地址栏自动更新为新URL;redirectType="Permanent"表示301永久重定向,对SEO更友好,若需临时重定向可改为Found(对应302状态码)。url="/Product/bitouyin/probiotin":使用以/开头的相对路径,代表网站根目录,比写完整域名更灵活,适配不同环境的域名配置。
额外:处理所有不存在的URL重定向
如果需要将所有访问不存在的文件/目录的请求都重定向到指定地址,可以添加以下规则:
<rule name="NotFoundRedirect" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Redirect" url="/your-specified-page" redirectType="Permanent" /> </rule>
该规则会匹配所有未对应服务器上实际文件或目录的请求,统一重定向到你指定的页面(替换/your-specified-page为实际地址即可)。
内容的提问来源于stack exchange,提问作者Bijan Zand
相关产品推荐
相关产品推荐

