IIS 7下仅HTML页面HTTP转HTTPS的URL Rewrite配置求助
解决IIS 7中仅HTML页面HTTP转HTTPS的URL Rewrite配置问题
我懂你现在的麻烦——全站HTTPS重定向搞的Google爬虫抓sitemaps.xml和ads.txt出异常,想只让HTML页面跳HTTPS,忽略这两种后缀的文件对吧?没问题,给你一套精准的配置方案,一步步来:
核心思路
我们要给URL Rewrite规则加排除条件:当请求的文件是.xml或.txt时,跳过HTTPS重定向;只对其他(尤其是HTML相关)的HTTP请求执行跳转。
具体配置代码
直接把这段规则加到你的web.config文件的<system.webServer>节点下(如果已经有<rewrite>节点,就把<rules>里的内容合并进去):
<rewrite> <rules> <!-- 仅对非.xml/.txt的HTTP请求重定向到HTTPS --> <rule name="HTTP to HTTPS (exclude XML/TXT)" stopProcessing="true"> <!-- 匹配所有URL路径 --> <match url="(.*)" /> <conditions logicalGrouping="MatchAll"> <!-- 条件1:当前协议是HTTP --> <add input="{HTTPS}" pattern="off" /> <!-- 条件2:排除.xml和.txt后缀的文件(忽略大小写) --> <add input="{REQUEST_FILENAME}" pattern="\.(xml|txt)$" negate="true" /> </conditions> <!-- 重定向到HTTPS版本,保留原路径和参数 --> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite>
代码细节解释
name:给规则起个好记的名字,方便后续维护<match url="(.*)" />:匹配所有URL路径<conditions>里的两个条件必须同时满足才触发重定向:{HTTPS} pattern="off":只处理HTTP协议的请求{REQUEST_FILENAME} pattern="\.(xml|txt)$" negate="true":negate="true"表示“不匹配该模式”,也就是直接跳过.xml和.txt文件的重定向
<action>:执行永久重定向(Permanent对应301状态码,对SEO友好),把请求转到对应HTTPS地址
验证方法
配置完后可以测几个场景:
- 访问
http://你的域名/index.html:会自动跳转到https://你的域名/index.html - 访问
http://你的域名/sitemaps.xml或http://你的域名/ads.txt:保持HTTP访问,不会跳转 - 其他非XML/TXT的资源(比如
.asp、.php或静态页面):正常跳转到HTTPS
注意事项
- 确保你的IIS 7已经安装了URL Rewrite模块(没装的话,可通过IIS管理器的“模块”功能添加,或者用Web平台安装器下载)
- 如果之前有其他HTTPS重定向规则,记得删掉旧规则,避免冲突
这样配置后,Google爬虫抓sitemaps.xml和ads.txt时就不会被强制跳转,同时你的HTML页面依然能保持HTTPS的安全访问啦!
内容的提问来源于stack exchange,提问作者Steve Rodriguez
相关产品推荐
相关产品推荐

