我想在我的服务器上自动创建一些重写规则。不幸的是,执行此操作的所有文档似乎都已过时。这是我在 SO 上能找到的最接近的,但不幸的是语法不再有效;appcmd 抱怨给定的部分不存在。我已经想出了如何解决全局规则集合,但我无法设置任何给定的属性。
这是我要插入的 XML 片段:
<system.webServer>
<rewrite>
<globalRules>
<rule name="Strip WWW" enabled="true" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.myapp\.com$" />
</conditions>
<serverVariables>
</serverVariables>
<action type="Redirect" url="http://myapp.com{PATH_INFO}" />
</rule>
</globalRules>
</rewrite>
</system.webServer>
这是我创建规则元素的方式。这可以正常工作:
appcmd set config -section:globalRules /+"[name='Strip WWW',enabled='true',stopProcessing='true']" /commit:apphost
我现在想创建 Match URL 元素,并根据上面链接的 SO 问题,我试图猜测语法。但是,这似乎不起作用:
appcmd set config -section:globalRules/rule.[name="Strip WWW"] /match.url:"(.*)" /commit:apphost
显示此错误消息:
错误(消息:未知配置部分“globalRules/rule.[name=Strip WWW]”。替换为?寻求帮助。)
我的猜测是我无法完全指定配置部分 - 除非该错误消息完全不准确。我还尝试了一些其他尝试来猜测该部分的语法:
- globalRules/rule.[name=Strip WWW]
- globalRules/rule[name=Strip WWW]
- globalRules/rule[@name=Strip WWW]
我不确定这个选择方案是什么,但它似乎不是 xpath。如果我能找出它叫什么,我也许能猜出正确的语法。