DotNetNuke Onsite SEO Tips

This tutorial will help you to optimize the default installation and configuration of a DotNetNuke website in such a way that it will become friendlier to both users and search engines.

DotNetNuke (DNN)   is an open source content management system powered by ASP.NET/Microsoft IIS web-based technologies. Although the CMS is open source, the web component platform is proprietary. The most common database used in DNN is Microsoft SQL Server, while as of June 2010, most DNN websites can be run using ASP.NET 3.5.

Unlike WordPress, which is also open source and can be optimally run in a LAMPP configuration (Apache, MySQL, Linux and PHP), DotNetNuke’s basic installation and configuration is plagued with onsite SEO related issues.

WordPress by default has fewer issues when it comes to SEO than DNN. This is even confirmed by Matt Cutts here:  “And WordPress is great in that many of the default settings are already set up configurations that work well with search engines.”

Prevent duplicating title tags on Pages

Let’s start improving the title tag of your home page. You can tweak your SEO- optimized home page title by following the procedure below.

Step 1: You need to log in as an administrator/superuser. Click the Login link.

Step 2: The default installation of DNN will label the home page ”Home.” Right after logging in, you are in the “Edit Mode” of your home page.

In this case, click “Settings” under Page Functions.

Step 3: You will be taken to the “Page Settings” page of your home page. Edit the “Page title” to something that is targeted for SEO. Make sure it is complete, descriptive and accurate.

Step 4: Click “Update.” The home page title tag is now revised.


Also, it might happen that the Default pages of your DNN installation will use the same title as the home page. This leads to duplicate titles. The following are the workarounds:

1. Delete the default content by removing the links to the default pages (which uses the same title as the home page).

2. Create new/dedicated pages for that content (Page functions à Add)

Details of this procedure can be seen in this tutorial

If you are using the Blog module features of DNN, then you might have title- related issues like the following:

Blog front page: Blog – All about Tequila Blog

    Blog – Why should you drink Tequila? Blog post example 1:

    Blog – Tequila Best reviews and offers on the net Blog post example 2:

You might notice right away that the annoying word “Blog” begins every title tag. For best results, you need to remove this so that your post title keywords will be more prominent and important than the repetitive word “Blog.”

Removing the “Blog” before the post title is a complex procedure. You might want to remove the word and just replace it with the | (pipe symbol).

This can be done by going through the following procedure:

1. Log in as superuser/administrator.

2. Go to your “Blog” page.

3. Under “Page Functions,” click “Settings.”

4. Under “Page Details,” you need to replace “Page title” with | (the pipe symbol). See the screen shot below.

5. Click “Update.”

6. Log out as administrator. Your blog front page title should look like this:


Using this method, you can reduce the similarity of blog post titles by removing the repetitive “Blog” part. It will now become:

Blog front page: | – All about Tequila Blog

Blog post example 1: |- Why should you drink Tequila

DotNetNuke is prone to duplicate content issues that can be easily resolved using robots.txt. This will both only prevent duplicate content issues and increase the crawling efficiency of Googlebot or other search engine bots visiting your blog.

The following are the URLs/directories generated by the default installation/configuration of a DNN website, which can be blocked using robots.txt:

1. Resource directory: /Resources/

2. JavaScript directory: /js/

3. All query URLs. These are the URLS that contain the “?” symbol.

Important: Make sure that an SEO-friendly URL structure is ENABLED (in admin panel à HOST à HOST settings à Advanced Settings à Make sure “Friendly URL settings are checked) before you block bots from crawling URLs with queries.

If your DNN URLs do NOT use an SEO-friendly structure but are using query-based URLs, then your content cannot be crawled if you block search engine bots from crawling your query-based URLs.

4. DesktopModules directory: /DesktopModules/ and /desktopmodules/

5. Portals directory: /Portals/

Final robots.txt syntax:

User-agent: *

Disallow: /Resources/

Disallow: /js/

Disallow: /*?

Disallow: /DesktopModules/

Disallow: /desktopmodules/

Disallow: /Portals/

The above robots.txt assumes that DotNetNuke is installed directly in the root directory, so that the home page of your DNN website is accessible in the web browser via:

Upload the robots.txt to the root directory of your website, so that it can be accessed at this URL:


This is one of the trickiest SEO-related issues in DNN. By default installation/configuration, the home page content is accessible via three versions of the URL, resulting in canonical issues:



3. (even Home.aspx has an equivalent TabID version of Default.aspx URLs, to be discussed below; this again contributes further to duplicate content issues)

Much worse is that the Windows/IIS server file system is NOT case sensitive, so again, this will give the 200 OK header status (if the webmaster links “inconsistently” to the lower case version of “Default.aspx,” which is “default.aspx,” instead of using upper case throughout the website code files).

Example URLs:



The problem is that Google’s file system is case sensitive, so it will treat and as duplicate content URLs.

Fortunately, there is a solution. A coding discussion, unfortunately, is beyond the scope of this tutorial, and it is important to check out an ASP Free tutorial on “Canonicalizing Dot Net Nuke URLs in ASP.NET 3.5

But the solution flow chart is as follows:

You will need to create a page load event handler and add new lines of code for your Link rel canonical in Default.aspx.vb, and then remember that, actually, /home.aspx OR /Home.aspx has a TabID URL version in terms of Default.aspx:


Is the output of the Request.Url.ToString() if you visit either these URLs:

Request.Url.ToString() is a function in VB.NET that will be used to retrieve the current URLs of the page.

Once this is known, you now have the complete list of URLs causing canonical issues. The next step is to create a condition within your VB.NET script such that:

If Request.URL.ToString() is either equal to any of the following:


2. (also including the lower case version default.aspx)

3. (also including the lower case version home.aspx)


Then return the link canonical code in the <head> section of the DNN Default.aspx:

<link rel="canonical" href="" />

This approach will solved the canonical issues caused by those URLs.

User-friendly navigation means that users can easily access the links in either the top or bottom portions of the web page. Google recommends the use of HTML text links to avoid crawling issues.

You can control the anchor text of the internal links by:

1. Logging in first as superuser or administrator.

2. Clicking on any page or post for which you need to edit the anchor text.

3. Under “Page Functions,” click “Settings” and then change the “Page name” to reflect the optimized or relevant anchor text that you need to show in the navigation menu.

Example screen shot (encircled in red box):

Summary: By applying the following simple techniques illustrated in this tutorial, you can:

1. Prevent duplicate title tags on pages

2. Improve Title tags on the DotNetNuke Blog Module

3. Set up Robots.txt for improving SEO in DotNetNuke

4. Fix canonical issues between Default.aspx, Home.aspx and /

5. Create user-friendly navigation and use keywords in internal links  

This will significantly improve the onsite SEO aspect of your DotNetNuke website. If you would like to check other onsite SEO factors that you can apply to DNN, you can read this article

Google+ Comments

Google+ Comments