如何配置IIS URL重写规则将请求重定向至带www前缀的HTTPS地址?
如何配置IIS URL重写将流量定向到带www前缀的域名?
Hey there! Let's get this www redirect sorted out properly—your current rule is missing a key piece to avoid infinite loops, so let's fix that and fill in the correct URL value.
核心问题说明
如果直接填写带www的域名而不加条件判断,当用户已经访问https://www.url.com时,规则会再次匹配并重定向,导致浏览器陷入无限循环。所以我们需要先添加一个条件,仅对不带www的域名请求触发重定向。
完整的重定向规则代码
把下面的代码替换你现有的规则,记得将example\.com替换成你实际的域名:
<rewrite> <rules> <rule name="Add www prefix" stopProcessing="true"> <match url="(.*)" ignoreCase="true" /> <!-- 条件:仅当请求的主机头是不带www的域名时触发 --> <conditions> <add input="{HTTP_HOST}" pattern="^example\.com$" /> </conditions> <!-- 重定向到带www的域名,{R:1}保留原请求的路径部分 --> <action type="Redirect" url="https://www.example.com/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite>
关键部分解释
stopProcessing="true":添加这个属性可以让规则匹配后停止处理后续规则,提升服务器处理效率。<conditions>块:{HTTP_HOST}是IIS的服务器变量,代表用户请求的域名。正则^example\.com$精确匹配不带www的域名(注意点号要转义成\.,因为正则里点号默认代表任意字符)。url="https://www.example.com/{R:1}":{R:1}对应<match>标签里(.*)捕获的内容,也就是用户请求的路径部分。比如用户访问https://example.com/blog/post,会被重定向到https://www.example.com/blog/post,完美保留原路径。redirectType="Permanent":这是301永久重定向,告诉搜索引擎和浏览器这个重定向是长期有效的,对SEO友好。如果只是临时需求,可以改成Temporary(302重定向)。
额外注意事项
- 确保你的IIS服务器已经安装了URL Rewrite模块,如果没装,这个规则不会生效。你可以在IIS管理器的模块列表里查看,或者从微软官方渠道下载安装。
- 测试时建议用浏览器隐私窗口,避免旧的重定向缓存干扰测试结果。
内容的提问来源于stack exchange,提问作者Chris




