It is non-trivial to setup friendly URL's for DotNetNuke, as of version 5.6, that include some sort of separater between words in the page name. For example, if your page is named "Rubicite Interactive Inc", the standard DNN friendly URL will be domain/RubiciteInteractiveInc.aspx. This is certainly an upgrade from what DNN sees internally, but it still falls short of what Google recommends.
You can purchase a Friendly URL provider like iFinity's URL Master to accomplish this, and I recommend that if it's an option for you. However, if you are already using a custom Friendly URL provider that you cannot get away from that does not already provide this functionality, then I can offer this slight modification to the DNN core.
Everything boils down to the GenerateTabPath(..) function. This function resides in Library/Common/Globals.vb. Any part of DNN that needs to generate or update a tabpath for a module eventually calls this function in some way. That function makes a call to an HtmlUtil function that strips our all non-word characters and replaces them with nothing.
I've updated the code so replace the calls to that particular HtmlUtil function with calls to a new private function that I impemented right below the GenerateTabPath function. Instead of replacing all non-word characters with nothing, the funciton first replaces all one-or-more occurances of white-space characters with a single hyphen.
"RubiciteInteractiveInc.aspx" becomes "Rubicite-Interactive-Inc.aspx"
The DNN team did us a big favor by having all TabPath generation go through this function. It would be a lot easier for FriendlyURL provider programmers to deal with placeholders if they had some way to override this function (without modifying the DNN core like I did). But, for now, you have a healthy selection of FrienldyURl providers who achieve this through a healthy amount of complexity and caching (which I recommend purchasing!) or this DNN Core modification.
Note: To modify the DNN core and apply it to your site, download the source code for DNN from dotnetnuke.com. Open the solution/project in the Library folder. Make the modification. Compile. Copy the resulting files from the bin folder to the bin folder of your DNN installation and refresh your DNN site in your browser.
To apply changes to an existing website After copying your new DotNetNuke.dll into your installation bin folder and visitng your site, you will need to update the title of all parent pages or root pages (at least those that have a space in their name). The "tab path" changes will trickle down to all children and you will begin to see pretty URLs throughout the site. However, You should be very careful if your site has been around for a while -- Search Engines, Blogs, etc may already be linking to your old ugly URLs. If this is the case, you need to setup 301 redirects to your new pretty URLs. If your site is still in development, then this should concern you.
Have some source code:
Do not use this in the Admin or Host Page Sub-trees.
DNN is rather particular about the paths of the admin and host pages. You will have to restore backup information if you update any pages in these sub-trees. (Mainly, you will want to manually revert the TabPath and TabName fields in the Database). Next time I deploy this code, I will put some logic into the function above that does not update the tab path if the page is in either of these sub-trees.
If you have any questions or comments, please use my contact form. Thanks.