我有一个在Azure Web应用程序中运行的C#网站。
过去,我在许多其他站点上使用过许多URL重写规则。在这种情况下,它们似乎无法正常工作。
以下规则:
<rule name="AddTrailingSlashRule1" stopProcessing="true">
<match url="(.*[^/])$"/>
<conditions>
<add input="{REQUEST_METHOD}" negate="true" pattern="^POST$"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
</conditions>
<action type="Redirect" url="{R:1}/"/>
</rule>
在其他站点中,会将斜杠添加到当前站点URL上的所有非文件或目录中
如果您访问网址为https://www.example.com/foo
的站点,则会将您重定向到https://www.example.com/foo/
。但是在这台特定的服务器上,我们将被重定向到https://example.azurewebsites.net/foo/
< / p>
另一个表现出类似行为的规则是我们的force-https重写规则。
<rule name="Force HTTPS" stopProcessing="false">
<match url=".*"/>
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="off"/>
</conditions>
<action appendQueryString="false" type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}"/>
</rule>
如果访问不是通过网址http://www.example.com
进行的,我们将被重定向到https://example.azurewebsites.net/
据我所知,Azure SHOULD 将在example.com
或{HTTP_HOST}
值中返回{R:1}
,但不是。
是什么原因导致这种奇怪的行为?