5

我不知道如何让我的 web.config 部署转换适用于重写规则。我尝试了以下方法,但它忽略了它。

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">


 <system.webServer>
 <rewrite xdt:Transform="Replace">
  <rules>

    <rule name="Force HTTPS On Login/Register" stopProcessing="true">
      <match url="Account/Login(.*)|Register(.*)" ignoreCase="true" />
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
    </rule>


    <rule name="Force HTTPS Off" stopProcessing="true">
      <match url="((Account/Login(.*))|(Register(.*)))" negate="true" ignoreCase="true" />
      <conditions>
        <add input="{HTTPS}" pattern="^ON$" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
    </rule>


  </rules>
 </rewrite>
</system.webServer>
4

1 回答 1

6

我使用 SlowCheetah 将我的 web.config 转换为生产。本来试了你试的,结果发现要加一个空的

<rewrite>
  <rules />
</rewrite>

到基础 web.config

然后写一个像这样的变换

<system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect to HTTPS" stopProcessing="true" xdt:Transform="Insert">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="^OFF$" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
</system.webServer>

(这是一个重定向转换,但我认为应该适用相同的原则)。

注意在基本配置文件xdt:Transform="Insert"的骨架中插入一个新节点。<rules />

于 2013-05-02T04:32:15.210 回答