最简单的方法是简单地将重写的 URL 作为响应正文的一部分转储:
<input type="hidden" id="__rewritten_url" value="<%=Request.ServerVariables("URL")%>" />
或者,您可以将重写的 URL 附加为Response Header
然后发出Ajax
请求并从中提取该标头。所以你web.config
看起来像:
<system.webServer>
<rewrite>
<rules>
<rule name="Section">
<match url="sections/(.*)" />
<action type="Rewrite" url="index.html?section={R:1}" logRewrittenUrl="true" />
</rule>
</rules>
<outboundRules>
<rule name="AppendRewrittenResponseHeader" patternSyntax="Wildcard">
<match serverVariable="RESPONSE_URL" pattern="*" />
<action type="Rewrite" value="{URL}" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
然后在您的客户端(jQuery
为简洁起见):
$.ajax({
type: "HEAD",
url: location.href,
success: function(message,text,response)
{
var myRewrittenUrl = response.getResponseHeader('URL');
}
});