我有一个站点mydomain.com/mysite
,我想在 IIS7 中配置一组重定向。
要从 重定向mydomain.com/mysite/old.aspx
到mydomain.com/mysite/new.aspx
我可以这样写:
<system.webServer>
<rewrite>
<rules>
<rule name="test" patternSyntax="ExactMatch" stopProcessing="true">
<match url="old.aspx" />
<action type="Redirect" url="new.aspx" />
</rule>
</rules>
但是为了使用重写映射获得相同的效果,我还必须指定部分/mysite/
:
<rewriteMaps>
<rewriteMap name="TestRewriteMap">
<add key="/mysite/old.aspx" value="/mysite/new.aspx" />
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="Redirect rule1 for TestRewriteMap">
<match url=".*" />
<conditions>
<add input="{TestRewriteMap:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
有什么方法可以避免在重写映射 URL 中指定站点名称吗?
答案1
我假设您将具有此重写规则的 web.config 放在文件夹 /mysite 中?
您应该能够{TestRewriteMap:{REQUEST_URI}}
用替换{TestRewriteMap:{REQUEST_FILENAME}}
。然后您可以/mysite/
从 中的键和值中删除<rewriteMap></rewriteMap>
。请记住,这还会匹配目录结构中更深层的任何 old.aspx(在 /mysite/ 下)。