Update : This is an old blog post; the Url Master module is in full release. Go to the product page here to read about the module and download the trial version
It’s been quite a few months since I started tinkering with Friendly Url providers and trying to get the best result possible. Though trial and error, requests for features and bug reports from committed users, the current product is reasonably mature, and I’m constantly surprised floating around the internet just how many DNN sites are now running the provider – though from the thousands of downloads I guess it’s not that surprising.
A while back I decided to fork the code base and create a ‘pro’ version, which would implement some of the more difficult features that people had requested, and provide a nicer interface for installing and configuring the myriad of options that the provider offered. I quickly got frustrated with the VB codebase I had been working from (which was a fork of the Ventrian provider, itself a fork of the base DotNetNuke provider). Mainly I was frustrated because I no longer like programming in VB, but also because it became apparent that there are so many permutations of options and possible problems, a more structured testing base was required.
The end result of this was a ground-up rewrite in C# of a totally new Friendly Url Provider and Url Rewriting module for DotNetNuke, which I have called ‘iFinity Url Master’.
Take Control of your Url’s
This new module has the following features and benefits:
|
Standard DNN install process
|
Install the module using the standard DNN module install. Just upload the zip file, click install, and it’s installed. No manual changes to the web.config file or need to manually copy binary files to specified locations.
|
|
GUI-based configuration of settings
|
The new module gives complete control over the settings using a new GUI interface. With this, you can configure all of the options with an intuitive interface, complete with context-help
|
|
Test changes before applying
|
Like to know what certain settings do before committing the changes? With the new ‘try before you apply’ interface, you can change all of the settings for generating friendly urls, see how the end result will look, and then apply the changes to the whole site when you are sure the changes are correct. This gives enormous flexibility to website administrators to test out changes to the Url system while others are still using the website.
|
|
Use any Url you like for any DNN page
|
With this module, DNN website administrators can forget the restrictions on page names. You can define any Url you like for a page, and this will be used throughout the site, even on intra-site generated links, menu systems and module-based links.*
Example : Page Name : Foo & Bar
Old DNN Url : MySite.com/Fooampbar/tabid/33/default.aspx
Url Master Url : MySite.com/Foo_Bar.aspx , or MySite.com/Foo_And_Bar.aspx – or, MySite.com/Totally_Unrelated_Url_Of_Your_Choosing.aspx
|
|
Define any ‘old’ Url to redirect to a certain page
|
Url Master gives you a way to break out of your old menu system. The problem with pages is that sometimes you like to move them, which creates a new Url, and any page rank and external links to that page prevent most administrators from moving the page. The Url Master module gives you the ability to define 301 and 302 redirects for any ‘old’ Url, which will forward requests onto the new page location. For search engines, using a 301 redirect will mean that the search engine will eventually update the index and transfer any page ranking to the new Url.
Example : Page Name : My Child Page
Old Dnn Url : MySite.com/MyParentPage/MyChildPage/TabId/44/default.aspx
Url Master Url (assuming a removal of the Parent Page)
MySite.com/My_Child_Page.aspx
And
301 redirect for :
MySite.com/MyParentPage/MyChildPage/TabId/44/Default.aspx
MySite.com/default.aspx?tabId=44
MySite.com/MyParentPage/MyChildPage.aspx
… or whatever other Url the page might have been known as.
With this function, you can replace a non-DNN site with a DNN site, and not lose any of the page rankings associated with the pages.
|
|
Integration into ‘Host’ and ‘Admin’ menus.
|
The Url Master module installs two new pages into your DotNetNuke website. One is installed into the Host menu, and is used to configure the overall options for Friendly Urls. The other is installed into the Administrator menu, and gives site administrators full control over what Url’s the site allows. This is all done with the module installation, no creation of pages or copying of modules required.
|
|
Full language support
|
Supports the use of the language modifier in the query string, and shifts the language modifier to the base of the page path, to give good Url separation to different language versions of the same website.
Example:
Old iFinity Friendly Url: Mysite.com/mypage/language/en-ca.aspx
Becomes :
Mysite.com/language/en-ca/MyPage.aspx
Mysite.com/language/fr-ca/MyPage.aspx
|
|
Support for Diacritic Urls including Umlauts
|
Site administrators with umlauts in a page name can either elect to keep the umlauts in the Url, or you can use the Url replacement function to define an ascii-version of the word. Either way works just fine, and the DNN encoding and non-support of umlauts is fixed.**
Example:
Page Name : Nűrburgring
Urls:
MySite.com/tracks/Nűrburgring.aspx will work, or change it to MySite.com/tracks/Nurburgring.aspx
- either will work
|
|
Exclude certain pages from using Friendly Urls
|
Sometimes, Dnn Module developers don’t use the standard Friendly Url API of the DotNetNuke core. This means they expect Url’s to be in a certain format, or their modules will not work. In the past, this meant that the entire site Url’s were dictated by the needs of a single module. Url Master undoes this by allowing exclusion by page path certain pages which should NOT use a Friendly Url. The Url returned will be the ‘standard’ DNN Friendly Url version.
|
|
Freedom of extension for Urls – any extension you like, including having no extension at all.
|
The .aspx extension is just the default given to ASP.NET pages by Microsoft. You can use any extension you like, including ones like .page, .content – or even none at all (like the iFinity.com.au site).***
Example:
Page Name : Remove the Aspx
Standard DNN Url: MySite.com/AspxIsForTheBirds/tabid/45/default.aspx
UrlMaster Url : MySite.com/RemoveTheAspx/
|
|
Replace spaces in Urls
|
You can define any character to replace spaces and special characters in your Page names. This gives an alternative to the removal of spaces by the standard DNN Friendly Url Provider.
Example:
Page Name : My Other Page
Standard DNN Url MySite.com/MyOtherPage/tabId/45/default.aspx
Url Master Url: MySite.com/My_Other_Page.aspx
|
* Only works if the Module author has used the standard DNN interface for generating Urls. Some third party modules use their own proprietary Url generation schemes, and as such the Friendly Urls may not be generated properly. However, most problems can be worked around with intelligent redirections and page exclusions.
** Make sure your IIS settings are correct for umlauts in the Urls. Some browsers may not be able to display Umlauts in the address bar and may encode the address.
*** Using this feature requires the administrator to have access to the IIS configuration for their website. Removing the extension means all IIS requests are routed through the ASP.NET runtime, which may have some performance applications for some websites.
Here are some screenshots:
Friendly Url Settings Section (Host Settings-> Friendly Url Settings Page)
On this screen you can see all the options for generating Friendly Urls. You can modify the settings, select a page in the site, then click on 'Show Friendly Url Example' to see how the Url will look. (this example shows a page called 'foo_bar.aspx' All of the changes are not committed to the web.config file until the 'Apply Changes' button is clicked, but you can test out the results at any time,

Url Rewriting Section (Host Settings -> Friendly Url Settings Page)
On this screen (which is part of the same screen as the previous image) you can change all the options which relate to rewriting the Urls (in other words, figuring out which Tab the Url is for) and redirecting Urls. Again, using the 'Test redirection and rewrite' button, you can type in a Url then check to see whether the Url Rewriter can figure out the correct TabId to send the request to. It will also output any 301 or 302 status codes encountered as part of processing the mock request.
Again, this allows modification of the changes so that you can see how your site is going to be affected before applying the change - I like to call this 'try before you apply'.
In this example, a Url of foo_amp_bar.aspx has been found and redirected to tabId 109, and a 301 redirect has been issued as well, to a new Url of foo_bar.aspx.

Page Urls (Admin Settings -> Page Urls )
This section is part of the administrators menu, and as such is available to administrators of any site in the DNN installation (not just the host). It allows a site administrator to define any Url to be mapped to a page on the site, and also to define any Url to be 301 or 302 redirected to that page.
In this example, we see that the 'Foo & Bar' page has been set up to use 'foo_bar' as the standard Url, and foo_amp_bar, foobar or any other 'standard' DNN url should be issued with a 301 redirect to the chosen foo_Bar.aspx. (this ties in with the previous examples)

What next?
The Url Master module will be in Beta testing until I feel it is ready for release. This will be a premium module (in other words, you’ll have to pay for it!). Pricing is yet to be finalised, but it will be on a per-domain licensing basis. I will continue to support the Free Friendly Provider into the future, as I will develop it alongside this module.
If you’d like to try out a Beta version, please contact me via PM if you are a forum member, or contact me via the ‘Talk to Us’ page. You can leave your email address in the comment of this blog if you like, but be warned spammers are out and about and continually trying to script-kiddie this site and put ‘world of warcraft’ links in the comments – so the spammers probably mining the comments for email addresses as well.
For Beta testers, I’m really looking for people who are confident in configuring Urls and understand exactly what they are doing. You won’t be able to use the Beta on a ‘live’ site because it will have ‘Trial Version’ links in it – this is because I don’t want it trusted until it has proven itself. I'll probably give out discounts to Beta testers who decide they want to buy the final version. Other people who aren't that technical but just want to be an early adopter should just continue to badger me for a release and wait until the bugs are cleared!