(我在 StackOverflow 上发布了这个问题,因为搜索答案在 StackOverflow 上显示了相关问题,这些问题得到了答案和许多赞成票。但到目前为止,我的问题赢得了反对票和“离题”的近距离投票,所以我想在这里提问它可能被认为更切题。)
我想做一个 URL 重写(如果需要,或者重定向,就像在这个回答的问题中一样),除非我希望它只在请求的 URL 只是站点根目录(没有文件或子目录并且没有查询)时重写/重定向字符串)。
即我只想请求TheSite.net重写/重定向到TheSite.net/home.htm,但请求TheSite.net/FAQ.htm或TheSite.net/sub或TheSite.net/?parameter=yep不是重写/重定向。
我已经重写和重定向到工作,例如:
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Rewrite home page to Home.htm" stopProcessing="true">
<match url="^" />
<action type="Rewrite" url="/Home.htm" />
</rule>
</rules>
</rewrite>
</system.webServer>
我也尝试过<match url="^$" />
and <match url="TheSite.net" />
,但那些自然也会重写 TheSite.net/?parameter=yep ,我需要它不要那样做。也许如果有另一个属性<match>
可以让我匹配空查询字符串,但如果有查询字符串则不匹配(或者如果斜杠后面有任何内容,则不匹配)?
我希望一个适当的规则可以做我想要的,但是我的 RegEx 语法技能不能胜任这项任务,而且我还没有找到一个足够接近的例子。
在这个站点上,我看到IIS URL 重写模块查询字符串参数看起来可能是可以工作的那种东西,尽管我想要的是相反的 - 只有在域名之后没有查询字符串或其他内容时才重写在网址中。