我正在尝试执行一个简单的URLRewriting。如果你访问azamsharp.com,它会转到某个文件夹浏览结构,它应该转到http://www.azamsharp.com/AzamSharpWebApps/Default.aspx。
我不想在URL中看到AzamSharpWebApps :这是我正在使用的URL重写:
<system.webServer>
<rewrite>
<rules>
<rule name="Virtual Director" enabled="true" stopProcessing="false">
<match url=".*" />
<conditions>
<add input="{MyDomains:{HTTP_HOST}}" pattern="(.+)" />
</conditions>
<action type="Rewrite" url="{C:1}{REQUEST_URI}" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="MyDomains">
<add key="azamsharp.com" value="/AzamSharpWebApps/default.aspx" />
<add key="www.azamsharp.com" value="/AzamSharpWebApps/default.aspx" />
</rewriteMap>
</rewriteMaps>
</rewrite>
</system.webServer>发布于 2010-08-05 08:38:34
我不知道IIS是如何工作的,但是在一般的正则表达式级别上,您希望用/AzamSharpWebApps/$0替换^(?!/AzamSharpWebApps).+
^是字符串的开始,而(?!..)是否定的先行检查,它说:“确保下面的文本不是"/AzamSharpWebApps",然后.+匹配字符串末尾的任何字符。
在替换端,$0表示整个捕获的文本-所以基本上正则表达式是说“如果它还没有以"/AzamSharpWebApps”开头,就给它加上前缀。
(您需要尝试在0美元之前是否需要a/。)
无论如何,看起来IIS使用{C:0}而不是$0,只是为了不同,所以我猜它在规则中看起来像这样:
<match url="^(?!/AzamSharpWebApps).+" />
<action type="Rewrite" url="/AzamSharpWebApps{C:0}" />但它可能需要的不仅仅是这些。
https://stackoverflow.com/questions/3223593
复制相似问题