IIS 8.5重定向时自动添加URL末尾斜杠致谷歌表单失效,如何解决?
遇到这种情况确实闹心,毕竟谷歌表单对URL格式的敏感度很高。既然你已经排查过HTTP重定向设置没发现问题,那大概率是IIS的URL重写模块或者默认的目录处理逻辑在暗中操作,给你几个可行的解决思路:
检查并调整URL重写规则
打开IIS管理器,找到你的站点,进入「URL重写」模块。看看有没有存在强制添加尾部斜杠的规则(比如常见的ForceTrailingSlash类规则)。如果有,要么直接禁用它,要么修改规则的条件,把谷歌表单的这个路径排除在外。比如给规则加个条件:{REQUEST_URI}不匹配^/your-redirect-path/viewform$(记得替换成你实际的跳转路径)。添加反向重写规则移除尾部斜杠
如果找不到现有规则,直接在站点的web.config里加一个专门针对这个谷歌表单URL的重写规则,自动去掉尾部斜杠:<configuration> <system.webServer> <rewrite> <rules> <rule name="Remove Google Forms Trailing Slash" stopProcessing="true"> <match url="^(.*)/viewform/$" /> <action type="Redirect" url="{R:1}/viewform" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>这个规则会匹配所有以
/viewform/结尾的URL,自动重定向到不带斜杠的版本。禁用目录浏览功能
IIS有时候会把viewform这类路径误判为目录,自动添加斜杠来「规范」路径。你可以在IIS管理器里找到站点的「目录浏览」,把它禁用掉;或者直接在web.config里添加配置:<configuration> <system.webServer> <directoryBrowse enabled="false" /> </system.webServer> </configuration>确保HTTP重定向的精确匹配
如果你是通过IIS的「HTTP重定向」模块设置的跳转,一定要勾选「精确匹配」选项,并且目标URL严格填写不带尾部斜杠的谷歌表单地址。这样IIS就不会自作主张修改URL格式了。
另外,建议用浏览器的开发者工具(F12)查看网络请求的重定向流程,确认是哪一步添加的斜杠——是IIS的初始重定向,还是后续的规则导致的,这样排查起来会更精准。
内容的提问来源于stack exchange,提问作者Naseer

