Way*_* Ye 4 asp.net iis url-rewriting
我被一个简单的出站规则所困,如果URL与http://wayneye.com/Feeds/Atom完全匹配,我想将HTTP Content-Type修改为application/atom + xml
我的规则XML:
<outboundRules>
<rule name="AtomFeedsIMEType" patternSyntax="ExactMatch">
<match serverVariable="RESPONSE_CONTENT_TYPE" pattern="http://{HTTP_HOST}/Feeds/Atom" />
<action type="Rewrite" value="application/atom+xml" />
</rule>
Run Code Online (Sandbox Code Playgroud)
需要帮忙...
您将服务器变量与完整URL匹配,包括域名.这不会起作用;-).Content-Type的价值是什么并不重要,无论如何你都要替换它,所以你可以匹配任何东西.要确保不在每个页面上替换它,您需要添加前提条件以仅匹配以/ Feeds/Atom开头的请求(在{REQUEST_URI}上).这是一个例子:
<outboundRules>
<rule name="AtomFeedsIMEType" preCondition="Match atom feeds">
<match serverVariable="RESPONSE_Content_Type" pattern="(.*)" negate="false" />
<action type="Rewrite" value="application/atom+xml" replace="true" />
</rule>
<preConditions>
<preCondition name="Match atom feeds">
<add input="{REQUEST_URI}" pattern="^/Feeds/Atom" />
</preCondition>
</preConditions>
</outboundRules>
Run Code Online (Sandbox Code Playgroud)
为此,必须设置服务器以允许更改Content-Type标头.这可以在服务器级别或站点级别完成,但需要由管理员完成.它在applicationHost.config中设置,而不是在web.config中设置.这是applicationHost.config的一部分,它允许:
<location path="your_site_name">
<system.webServer>
<rewrite>
<allowedServerVariables>
<add name="CONTENT_TYPE" />
</allowedServerVariables>
</rewrite>
</system.webServer>
</location>
Run Code Online (Sandbox Code Playgroud)
您也可以从GUI允许此操作,在主URLRewrite屏幕的操作下使用View Server Variables链接.希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
8528 次 |
| 最近记录: |