使用vs2012 Web部署web.config转换更新URL重写规则

时间:2013-05-02 04:27:59

标签: visual-studio-2012 msdeploy

我无法弄清楚如何让我的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>

1 个答案:

答案 0 :(得分: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 />