What are the pros for using extension-less URLs? What are the pros for using extension-less URLs? asp.net asp.net

What are the pros for using extension-less URLs?


The reason for extension-less URLs is that it is technology independent. If you want to change how your content is rendered you do not have to change the URL.

W3: Cool URIs don't change

File name extension

This is a very common one. "cgi", even ".html" is something which will change. You may not be using HTML for that page in 20 years time, but you might want today's links to it to still be valid. The canonical way of making links to the W3C site doesn't use the extension....

Conclusion

Keeping URIs so that they will still be around in 2, 20 or 200 or even 2000 years is clearly not as simple as it sounds. However, all over the Web, webmasters are making decisions which will make it really difficult for themselves in the future. Often, this is because they are using tools whose task is seen as to present the best site in the moment, and no one has evaluated what will happen to the links when things change. The message here is, however, that many, many things can change and your URIs can and should stay the same. They only can if you think about how you design them.


It's mostly done for aesthetic purposes.

There is a very minor potential security benefit (a user doesn't immediately know what language the backend code is written in) but this is negligible.

A related blog post.


People claim it makes for better SEO, even if I am not personally convinced of that. Many clients request these extension-less URLs nowadays, so it's just as well that it can be easily achieved.

If you are running IIS 7, you can switch the AppPool to run on the Integrated Pipeline, thereby removing the need to have specific extensions mapped to the ASP.NET engine. Once that is done, you can instruct Sitecore to use extension-less urls in the web.config setting (assuming Sitecore 6):

<linkManager defaultProvider="sitecore">  <providers>    <clear />    <add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel"          addAspxExtension="false"    /* This one is set to true, per default */         alwaysIncludeServerUrl="false"          encodeNames="true"          languageEmbedding="asNeeded"          languageLocation="filePath"          shortenUrls="true"          useDisplayName="false" />  </providers></linkManager>

And you're set.

Be aware that early versions of Sitecore 6 had a few issues when running Integrated Pipeline. More information can be found here.