updating url rewriting rule with vs2012 web deployment web.config transformations
msdeploy, visual-studio-2012
Solution
I use SlowCheetah to transform my web.config for production. I originally tried what you tried, but found that I had to add an empty
<rewrite>
<rules />
</rewrite>
to the base web.config
and then write a transform like
<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>
(that is a redirect transform, but I think the same principal should apply).
Note `xdt:Transform="Insert"` to insert a new node into the skeletal `<rules />` in the base config file.
Problem
I can't figure out how to get my web.config deployment transformation to work for a rewrite rule. I've tried the following and it ignores it. ``` <?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> ```