(I posted this question on StackOverflow because searches for an answer showed related questions on StackOverflow, which got answers and many upvotes. But my question so far earned a downvote and an "off-topic" close vote, so I'm trying asking here where it may be considered more on-topic.)
I would like to do a URL rewrite (or redirecton if need be, like in this answered question), except I would like it only to rewrite/redirect if the requested URL is only the site root (with no files or subdirectories and no query strings).
i.e. I want only requests for TheSite.net to rewrite/redirect to TheSite.net/home.htm, but requests for TheSite.net/FAQ.htm or TheSite.net/sub or TheSite.net/?parameter=yep to not be rewritten/redirected.
I have gotten rewrites and redirects to work such as:
<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>
I have also tried
<match url="^$" /> and
<match url="TheSite.net" />, but those naturally rewrite TheSite.net/?parameter=yep too, and I need it to not do that. Perhaps if there is another attribute of
<match> which lets me match empty query string but not if there is a query string (or not match if there is anything is after the slash)?
I'm hoping an appropriate rule could do what I wanted, but my RegEx syntax skills are not up to the task and I haven't found an example of something close enough.
On this site, I see IIS URL Rewrite Module Query String Parameters looks like it might be the sort of thing that could work, though what I want is the opposite - to only rewrite if there is no query string or other content after the domain name in the URL.