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.
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 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:
- default.asp
- default.html
- default.htm
- default.aspx
- default.php
- default.shtml
- default.shtm
- index.html
- index.htm
- index.asp
- index.php
- index.shtml
- index.shtm
- home.html
- home.htm
- home.shtml
- home.shtm
- 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.
Comments
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>