
Don’t. Just don’t do it. Do not run WordPress on a Windows IIS web server. Simple as that.
We released a major new site rebuild this week and had the unfortunate experience of having the system running on IIS 6.
How do I hate thee, IIS? Let me count the ways …
URL Rewrites. This is the functionality that turns a URL like this: index.php?id=564, into a pretty URL that looks like this: /running-wordpresss-on-iis-sucks/. This second method is preferred not only for search engine exposure, but also because it is easier on the eyes, easier to remember, and is immediately recognizable when sent via an email. This is simple to do when running WP on an Apache web server because you can simply set it in WP (customizing the structure of the link to use dates, titles, etc) and forget it. But IIS has no sense of URL rewriting. You can redirect a file by going into the server settings and configuring it by hand, but that is unacceptable when managing 1,000+ documents/posts/pages.
The lack of rewriting also affects paging (when the server returns multiple pages of search results and the URL needs to support a structure like this: /?search=why-does-windows-suck/page/3).
I spent many days looking for and programming my own solutions. None that I could find solved all the problems created by the missing functionality. I’ll save you the details, but I finally found one that worked: WordPress URL Rewrite by Binary Fortress. It is a simple ISPAI .dll extension that you point your IIS server to. There is one .ini file where you can identify the root-level directory where you want to start rewritiing, and then a second section where you can list exceptions. The exceptions was critical for this project because we needed to leave in place e-commerce functions that run on IIS).
And then there’s 301 redirects. Windows IIS does not support this either. Why is this important? Because when you rebuild or redeign a site, even though the content in the system remains the same, often the permalinks are going to be different (some of them, anyway). In order to maintain your good standing with the search engines, you need to redirect those old pages to the new ones, or at least to another page that exists on the site. If search results from Google are returning pages on your site that no longer exist, your ranking suffers. Apache allows you to create a .htaccess file, which is a simple text file that the server reads to map those changes (it’s simply a line-by-line list of old pages and news pages). But IIS has nothing this simple. In IIS you need to go to each page in the file structure, right-click on it, go to it’s properties, and then set it to map to another page. Again, for a site with 1,000+ pages, a nightmare.
These may sound like trivial quibles, but this is a fundmental issue when you’re knee-deep in a redesign/rebuild. The alternative, when possible, is to run Apache on the Windows server.