IIs 8 将 URL 从 http 重定向到 https
Posted
技术标签:
【中文标题】IIs 8 将 URL 从 http 重定向到 https【英文标题】:IIs 8 Redirect URL from http to https 【发布时间】:2016-02-26 05:26:33 【问题描述】:我刚刚为我的 dmain 和主机设置了 ssl。我想将我的网站限制为 https://www.example.com
ONLY。
如果任何用户尝试打开http://example.com
、www.example.com
、example.com
或https://example.com
,他必须被重定向到https://www.example.com
重定向必须仅针对域名。任何 URL 的其余部分将保持原样。
例如:如果用户打开example.com/dir1/page1.aspx
,他必须被重定向到https://www.example.com/dir1/page1.aspx
我想使用 IIS 重写规则。
【问题讨论】:
如果你在vs中工作,在项目的App_Start文件夹中,打开FilterConfig.cs文件并添加:filters.Add(new RequireHttpsAttribute());这将使您的整个网站都需要 ssl 才能执行任何操作。 @nocturns2 不错的解决方案,但我不会解决从非 www 到 www 的重定向 不,不会。很高兴您找到了解决方案,希望您不介意我将其保存以备将来使用。谢谢! 【参考方案1】:我通过将此代码添加到域根目录的web.config
文件中解决了这个问题。
www
开头,则匹配该网址
它是http
或https
如果第二条规则以www
开头但它不是 https
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect from non www" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="HTTP_HOST" pattern="^example.com$" />
</conditions>
<action type="Redirect" url="https://www.example.com/R:0" redirectType="Permanent" />
</rule>
<rule name="Redirect from non https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="HTTPS" pattern="^OFF$" />
<add input="HTTP_HOST" pattern="^www.example.com$" />
</conditions>
<action type="Redirect" url="https://www.example.com/R:0" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
【讨论】:
IIS 具有请求过滤功能,您可以在其中输入规则。我仍然需要测试您的解决方案,但我很确定它应该可以工作。过去您必须将 url 重写组件添加到 iis。 还需要添加什么才能使 web.config 中的重定向起作用?将此 xml 放入 web.config 只会使 IIS8 崩溃(500 错误 - 没有消息也没有日志) 这需要 URL 重写模块【参考方案2】:如果您无法控制 iis 或使用托管公司不允许您更改设置的共享主机,请将其添加到您的 global.asax 文件中。
protected void Application_BeginRequest(object sender, EventArgs e)
if (HttpContext.Current.Request.IsSecureConnection.Equals(false) && HttpContext.Current.Request.IsLocal.Equals(false))
Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] + HttpContext.Current.Request.RawUrl);
已编辑:
对于规范标签 (www.example.com),您无需对代码进行任何更改。 在您的 plesk 面板/odin 面板中(甚至在共享主机中)有一个设置来为您的应用程序选择默认 url。
它会自动将您的网站重定向到 www.example.com
您网站的托管设置下的设置。 选择 www 的首选域选项
【讨论】:
对于那些无法控制 iis 的人来说是一个不错的解决方案;但是将非 www 转发到 www 呢?你能把它完成吗 @shadyshrif 我已经编辑了转发到 www url 的答案。 这仅适用于 IIS7.x 吗?出于某种原因,即使在 http 请求上 IsSecureConnection 也是如此(因此它永远不会重定向到 https)。不知道为什么它不能正常工作,也许 IIS8 中有一个错误(即使不是,也要将此值设置为 true)? @MC9000 真的不知道,因为我没有在所有版本的 iis 上测试过这个,但我发现了这个bytes.com/topic/asp-net/answers/…以上是关于IIs 8 将 URL 从 http 重定向到 https的主要内容,如果未能解决你的问题,请参考以下文章