IIs 8 将 URL 从 http 重定向到 https
IIs 8 Redirect URL from http to https
我刚刚为我的域名和主机设置了 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 重写规则来完成。
我通过将此代码添加到域根目录中的 web.config
文件解决了这个问题。
- 第一条规则匹配 url 如果它 不是以
www
开始 无论如何
它是 http
或 https
第二个规则匹配 url 如果它 开始 与 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 或使用托管公司不允许您更改设置的共享托管,请将此添加到您的 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 panel/odin 面板(即使在共享主机中)为它提供了一个设置为 select 您应用程序的默认 url。
它会自动将您的网站重定向到 www.example.com
您网站的托管设置下的设置。
select www
的首选域选项
我刚刚为我的域名和主机设置了 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 重写规则来完成。
我通过将此代码添加到域根目录中的 web.config
文件解决了这个问题。
- 第一条规则匹配 url 如果它 不是以
www
开始 无论如何 它是http
或https
第二个规则匹配 url 如果它 开始 与
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 或使用托管公司不允许您更改设置的共享托管,请将此添加到您的 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 panel/odin 面板(即使在共享主机中)为它提供了一个设置为 select 您应用程序的默认 url。
它会自动将您的网站重定向到 www.example.com
您网站的托管设置下的设置。 select www
的首选域选项