我不会问其他任何提供的解决方案是否适合我,但他们没有。他们的部分工作部件没有这样我认为我会要求完整的解决方案,包括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。什么是最好的方法。
对此的任何帮助都将非常感激。
由于
答案 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
%>
您可能需要稍微调整一下,但它仍然是编码重定向的基础。