URL Rewrite is a powerful URL rewriting tool available for IIS7 and newer. Your rewriting options are almost unlimited, giving you the ability to optimize URLs for search engine optimization (SEO), support multiple domain names on a single site, hiding complex paths and much more.
URL Rewrite allows you to use any Server Variable as conditions, and with URL Rewrite 2.0, you can also update them on the fly. To see all variables available to your site, see this post.
An understanding of the parts of a complete URL are essential to working with URL Rewrite, so I’ll include the basics here. Ruslan Yakushev’s configuration reference was my authoritative source for this.
Take this URL for example:
The URL is http://www.bing.com/search?q=IIS+url+rewrite
The parts of the URL are: http(s)://<host>:<port>/<path>?<querystring>
Part | Example | Server Variable |
http(s) | http | SERVER_PORT_SECURE or HTTPS = on/off |
<host> | www.bing.com | HTTP_HOST |
<port> | Default is 80 | SERVER_PORT |
<path> | search | The rule pattern in URL Rewrite |
<path> | /search | PATH_INFO |
<querystring> | q=IIS+url+rewrite | QUERY_STRING |
entire URL path with querystring | /search?q=IIS+url+rewrite | REQUEST_URI |
It’s important to note that /, : and ? aren’t included in some of the server variables. Understanding which slashes are included is important to creating successful rules.