需要将网站重定向到www和https

时间:2016-07-22 08:15:35

标签: iis url-rewriting asp-classic web-config url-redirection

我不会问其他任何提供的解决方案是否适合我,但他们没有。他们的部分工作部件没有这样我认为我会要求完整的解决方案,包括IIS设置重新绑定。

我有一个网站(旧的ASP经典版)正在转移到IIS 8(2012)。

从我的主机文件中测试时,该网站正常工作。

目前我只能将http重定向到https而不是非www请求到www.example.com。

所以我在IIS(80/433)中为www.example.com提供了2个绑定,我还尝试了另一个没有www的设置。例如example.com,但后来我遇到了错误,例如系统试图以这样的方式处理你的请求它不会返回,例如在循环中重定向等等。

我不太确定这是关于2批次的绑定还是规则它变得有点乱。所以我需要从IIS绑定设置和web.config规则的整个方法(或者在IIS 8中有更好的方法强制所有80个流量到端口443?)

我的web.config文件中已有许多ISAPI规则,例如

<rule name="Order" stopProcessing="false">
    <match url="^applications/order/?$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
    <action type="Rewrite" url="plugins/order.asp" />
</rule>
<rule name="Robots 1" stopProcessing="false">
    <match url="^robotstxt\.asp$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
    <action type="Rewrite" url="robottxt.asp" />
</rule>
<rule name="Robots 2" stopProcessing="false">
    <match url="^robotstxt$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
    <action type="Rewrite" url="robottxt.asp" />
</rule> 

因此,当我读完时,我看到人们试图一次或两套地做这两个规则,但它从来没有成功地为我做过工作。

我需要非http请求转到https 以及非www请求访问www.example.com例如https://www.example.com

目前它的部分工作,但仅仅是因为我没有尝试非www。重定向。

我有两个绑定用于www.example.com主机名,这个规则位于顶部。

<rule name="Redirect to HTTPS" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTPS}" pattern="^OFF$" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>

因此所有规则都有效,包括http到https。但是,我也需要非www规则。

要让它保留我的其余规则并让它重新定向非www。到www.example.com的流量,例如https://www.example.com。什么是最好的方法。

  1. 我是否需要在没有www的情况下设置另一对绑定。 e.s example.com for 80/443?
  2. 然后,我添加了什么规则以及它们需要以什么顺序作为int .htacces它们在循环中从上到下进行处理我只是想知道IIS方式还有一个逻辑路径可能会使其跳过导致无限循环。
  3. 对此的任何帮助都将非常感激。

    由于

1 个答案:

答案 0 :(得分:0)

我认为如果您需要快速掌握这一点,我会添加包含内容。使用搜索和替换程序将include标记添加到您的所有页面中:

<!--#include file="redirect.asp"-->

然后使用类似下面的内容创建“redirect.asp”:

<%
webDomain=LCase(Request.ServerVariables("HTTP_HOST"))
scriptname=Request.ServerVariables("SCRIPT_NAME")
If InStr(webDomain,"https://www.example.com")=0 Then

    Response.Status="301 Moved Permanently"
    Response.AddHeader "Location", "https://www.example.com" & scriptname

End If
%>

您可能需要稍微调整一下,但它仍然是编码重定向的基础。