IIS7:HTTP-> HTTPS干净利落

cpu*_*uru 145 xml https iis-7

是否有一种干净的方法将所有尝试转到HTTP://版本的站点重定向到其HTTPS://等效?

tox*_*xaq 177

我认为最干净的方式如IIS-aid.com所述.它只是web.config,所以如果你更改服务器,你不必记住你使用403.4自定义错误页面或其他特殊权限所经历的所有步骤,它只是工作.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
            <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

  • 确保IIS服务器上安装了Microsoft URL重写模块 (16认同)
  • 对于任何还没有重写部分的人,请将规则放在web.config的以下部分中:<system.webServer> <rewrite> <rules> ... </ rules> </ rewrite> </ system .webServer> (15认同)
  • 这对我有用,除了我必须将重定向URL修改为https:// {HTTP_HOST} {REQUEST_URI} (9认同)
  • 出于SEO原因,您应该使用redirectType ="Permanent".查看https://support.google.com/webmasters/answer/6033085?hl=zh-CN&ref_topic=6033084 (7认同)
  • 这对我也有用.我必须添加我运行的应用程序... http:// localhost/app1/=> http:// {HTTP_HOST}/app1/{R:1} (6认同)
  • 这非常有效,对于奖励积分,它是完全独立的,因此您无需按照接受的答案中的说明创建新网站 (4认同)
  • 这在IIS 8上对我不起作用,它会在Chrome中导致`ERR_TOO_MANY_REDIRECTS`. (4认同)
  • 上面的重写规则解决了我的问题,但直到我第一次进入IIS中的SSL设置并取消选中需要SSL(即使只检查了Ignore). (3认同)

Col*_*acX 14

我找到的最简单,最干净的解决方案是

  1. 在SSL设置中 - >需要SSL

  2. 在错误页面 - >在403.4错误 - >重定向到HTTPS站点

  3. 在错误页面 - >编辑功能设置... - >设置本地请求的详细错误和远程请求的自定义错误页面

好处是它不需要额外的代码行.缺点是它会将您重定向到绝对URL.

  • @MarcosDimitrio我很久以前不确定.但我相信,当我的意思是它将你重定向到一个绝对的网址,我的意思是"基本网址".例如,"http"://mywebsite.com/hellokitty将被重定向到"https"://mywebsite.com,从而丢失一些路径信息,这将打破每个现有链接的额外路径信息. (2认同)

mik*_*ika 5

一个干净的方式只改变http - > https的URL方案,并保留其他所有等价物.它应该是服务器端,以便没有浏览器问题.

JPPinto.com有关于如何完成此操作的逐步说明,除了它们使用javascript(HttpRedirect.htm)而不是服务器端重定向.出于某种原因,如果您启用了"显示友好的HTTP错误消息",则无法让IE运行javascript,默认情况下处于启用状态.该脚本的另一个问题是,即使在FF或Chrome中,重定向到路径也不起作用.该脚本始终重定向到root.(也许我错过了一些东西,因为它应该重定向到路径.)

出于这些原因,我使用ASP页面进行重定向.缺点当然是这需要在服务器上启用经典ASP.

OpsanBlog有一个ASP脚本和说明,可以很好地与IIS6.

我在IIS7上使用这种方法时遇到了一些问题.用户界面主要是问题,因为IIS7很容易错过一些东西.

  • 首先,您需要安装ASP作为Web服务器角色功能.
  • 其次,使用虚拟目录并没有在IIS7中按预期工作,我没有尝试调试它.相反,我将文件放在站点的根文件夹中,并使用403.4错误页面中的URL"/SSLRedirect.asp"来引用它.
  • 最后,最棘手的部分,您不能为SSLRedirect.asp强制执行SSL.否则你会收到403.4错误.要执行此操作,请在IIS7的"内容视图"中选择文件,然后切换到"功能视图",以便您可以编辑单个文件的SSL设置并禁用"需要SSL"复选框.

IIS管理器应在标头中显示文件名.