DotNetNuke SEO

I've been reading quite a bit lately on improving SEO for our DotNetNuke website, IHBSOnline.com and quickly realized it just isn't enough to throw up a website, add a listing in a couple of search engines and wait for the masses.

First off, the DnnFriendlyUrlProvider, while writing friendlier URL's than older versions of DNN, could be better. This is why you need the iFinity FriendlyURL provider.

It is free, but keep in mind it is really designed for a single domain site, and presents other issues with some other 3rd party modules. If you fall into that category, I'd suggest you purchase the full version, as it adds additional functionality you'll need and want.

People sit under a Google logo at the Google s...Image by AFP/Getty Images via Daylife

I've learned that Google and possibly other search engines actually penalize you if you create duplicate content.

The duplicate content issue could easily arise if you have a host that responds to both http://mydomain.com and http://www.mydomain.com.

You can either try to contact your hosting provider to make changes to your account to create a 301 redirect from one virtual site to the other, or do what I did, and create a script that determines the Server Variable HTTP_HOST.

Image representing GoDaddy as depicted in Crun...Image via CrunchBase

I use GoDaddy hosting, and didn't want to jump through hoops to get this done by them, and decided to manage it myself, using classic ASP. You'll find other methods all over the web in CFM, PHP and the like.

Since I know the order that GoDaddy's IIS servers look for a default document:

  1. default.asp
  2. default.html
  3. default.htm
  4. default.aspx
  5. default.php
  6. default.shtml
  7. default.shtm
  8. index.html
  9. index.htm
  10. index.asp
  11. index.php
  12. index.shtml
  13. index.shtm
  14. home.html
  15. home.htm
  16. home.shtml
  17. home.shtm
  18. welcome.html

I'll set up the following page, named Default.asp, which also redirects to a few testing sub-domains:

<%@ Language=VBScript %>
<% Option Explicit %>

<%
Dim strHttpHost, strPage
strHttpHost = Request.ServerVariables("HTTP_HOST")

Select Case strHttpHost
Case "ihbsonline.com"
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.ihbsonline.com/"
Case "template.ihbsonline.com"
Response.Redirect "http://template.ihbsonline.com/Default.aspx"
Case "testing.ihbsonline.com"
Response.Redirect "http://testing.ihbsonline.com/Default.aspx"
Case Else
%>
<script type="text/javascript">
<!--
window.location = "/Default.aspx"
//-->
</script>
<noscript>
<META http-equiv="refresh" content="0;URL=/Default.aspx"/>
</noscript>
<%
End Select
%>

Now all engines know the correct location to find my web.

Reblog this post [with Zemanta]

Comments

John Croson said…
I've found that the iFinity URL Rewriter module breaks the built-in RSS Syndication of DNN, and have switched to the Ventrian Systems URL Rewriter, which is also free, and similar in terms of restrictions with regard to multiple portals. It doesn't however, break RSS.

In addition, Google doesn't like my Meta refresh method of redirecting to the DNN Default.aspx, so I've used a javascript method, with meta as fallback:

<script type="text/javascript">
<!--
window.location = "/Default.aspx"
//-->
</script>
<noscript>
<META http-equiv="refresh" content="0;URL=/Default.aspx"/>
</noscript>

Popular posts from this blog

NPI Search Redundancy

freeFTPD

Using ImageMagick and Tesseract to sort TIFFs on Windows