在发布配置中插入重写规则
Posted
技术标签:
【中文标题】在发布配置中插入重写规则【英文标题】:Inserting Rewrite rule in release config 【发布时间】:2016-06-06 14:51:23 【问题描述】:您好,我想为“重定向到 HTTPS”插入一个重写规则,但仅限于我的发布配置
这就是重写规则的样子
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to HTTPS">
<match url="(.*)" />
<conditions>
<add input="HTTPS" pattern="off" ignoreCase="true" />
<add input="URL" pattern="/$" negate="true" />
<add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="https://SERVER_NAME/R:1" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
</system.webServer>
如何仅在我的 release.config 中实现这一点?
【问题讨论】:
【参考方案1】:只需在需要插入到 web.config 的发布版本的元素上添加 xdt:Transform="Insert"
属性。例如,如果您的初始 web.config 根本不包含 <rewrite>
元素,那么 release.config 应该如下:
<system.webServer>
<rewrite xdt:Transform="Insert">
<rules>
<rule name="Redirect to HTTPS">
<match url="(.*)" />
<conditions>
<add input="HTTPS" pattern="off" ignoreCase="true" />
<add input="URL" pattern="/$" negate="true" />
<add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="https://SERVER_NAME/R:1" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
</system.webServer>
否则,如果初始的 web.config 已经包含一些其他规则,那么您只需在 <rule>
元素级别添加 xdt:Transform="Insert"
属性即可:
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to HTTPS" xdt:Transform="Insert">
<match url="(.*)" />
<conditions>
<add input="HTTPS" pattern="off" ignoreCase="true" />
<add input="URL" pattern="/$" negate="true" />
<add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="https://SERVER_NAME/R:1" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
</system.webServer>
【讨论】:
【参考方案2】:您可以查看 web.config 转换: https://msdn.microsoft.com/library/dd465318(v=vs.100).aspx
创建和编码转换文件
-
如果不存在用于构建配置的转换文件
要指定设置,在解决方案资源管理器中,右键单击
Web.config 文件,然后单击添加配置转换
打开您要使用的构建配置的转换文件。
编辑转换文件以指定在使用该构建配置进行部署时应对已部署的 Web.config 文件进行的更改。默认的转换文件包括展示如何编写一些常见转换的 cmets。
【讨论】:
以上是关于在发布配置中插入重写规则的主要内容,如果未能解决你的问题,请参考以下文章