How to rewrite the url of a webpage in IIS UrlRewriteModule with web.config?

Question

I search for a rule (or a set of rules) that eliminate the extensions of the html files but at the same time to be able to rewrite the browser url like the example below:

category1_pageid2.html to categories_page (more seo friendly)

I have a shared hosting environment with IIS 8.5 with IIS_UrlRewriteModule 7.1.1952.0

Many thanks for your help


Show source
| php   | html   | seo   | iis   | web-config   2016-12-30 17:12 1 Answers

Answers ( 1 )

  1. 2017-01-01 20:01

    In IIS, I created a new rule:

    enter image description here

    Then in the next dialog, I added a Pattern categories_page with conditions for {QUERY_STRING} matching pattern c=(\d+)&p=(\d+) (though you may not need a query string - customize per your needs). And for the Action I added a Rewrite URL of category{C:1}_pageid{C:2}.html. If you don't need the query string, then you can un-check that checkbox for append query string.

    enter image description here enter image description here

    Looking at the web.config file for the site, I see the XML below:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="category-page">
                        <match url="categories_page" />
                        <action type="Rewrite" url="category{C:1}_pageid{C:2}.html" />
                        <conditions>
                            <add input="{QUERY_STRING}" pattern="c=(\d+)&amp;p=(\d+)" />
                        </conditions>
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    </configuration>
    

    When trying this in my browser, I see the category1_pageid2.html page when I naveigate to localhost/categories_page?c=1&p=2:

    enter image description here

    Other options include a rewrite map - see this answer for a short explanation.

◀ Go back