Nate
Nate

Reputation: 2326

IIS 7 URL Rewrite - CamelCase domain and lower case everything else

I am trying to setup rewrite rules for my site in iis 7 with the URL Rewrite module. If the site name is "WonderfulWidgets"

I want it to always be http://WonderfulWidgets.com.
NOT: wonderfulwidgets.com
NOT: WONDERFULWIDGETS.com

I also want everything after WonderfulWidgets.com to be lower case.
IE WonderfulWidgets.com/best-widgets.

I have accomplished the lower case url rewrite and I have also made it so it will remove any leading www before WonderfulWidgets.com

My problem is my lower case URL rewrite lowers the domain name too. I need help writing the CamelCase domain name that works with rewriting everything else as lower case.

Here's what I have in my web.config:

<rewrite>
        <rules>
            <rule name="CanonicalHostNameRule1">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^WonderfulWidgets\.com$" negate="true" />
                </conditions>
                <action type="Redirect" url="http://WonderfulWidgets.com/{R:1}" />
            </rule>
            <rule name="RemoveTrailingSlashRule1" stopProcessing="true">
                <match url="(.*)/$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>
                <action type="Redirect" url="{R:1}" />
            </rule>
            <rule name="Default Document URL Rewrite" stopProcessing="true">
                <match url="(.*?)/?Default\.aspx$" />
                <action type="Redirect" url="{R:1}/" />
                <conditions>
                    <add input="{URL}" pattern="WebResource.axd" negate="true" />
                </conditions>
            </rule>
        </rules>
    </rewrite>

Upvotes: 0

Views: 1541

Answers (1)

DuckMaestro
DuckMaestro

Reputation: 15885

DNS names are generally treated as case insensitive, and so most (all?) web browsers display the domain name in all lower-case in the address bar. To my knowledge you cannot change this behavior via changing what you return in your HTTP response.

From RFC 4343:

According to the original DNS design decision, comparisons on name lookup for DNS queries should be case insensitive.

From Wikipedia:

Domain names are interpreted in case-independent manner.

The browsers all seem to prefer lower-case presentation.

Upvotes: 3

Related Questions