Archive for the ‘SEO’ Category

Best Free JavaScript and CSS Compressor to Optimized your Website.

Saturday, October 10th, 2009

If you are digging into DotNetNuke website optimization, I’m sure you have been struggling on it. It’s not easy to optimize all the JavaScript and CSS in robust web application like DotNetNuke. If you’re a heavy users and afford to pay for solution, then the simplest way is to buy all in one compressor like Snapsis PageBlaster Pro to merge and compress all JavaScripts. However, this is not always the solution if you have other modules and setting in your DNN. Most of the time merging the DNN Core JS will result in break functionality to you web portal.

(more…)

Making DotNetNuke Logo Link SEO Friendly!

Tuesday, May 12th, 2009

Often SEO geeks will advice you not to use the original Logo skin object due to that it will automatically append Default.aspx behind your domain name. This is very bad as it search engine may treat it as a duplicate page of your home page. Even Search Engine will not ‘punish’ you for that but your PageRank weight will definitely be dispersed into different URL like www.example.com and www.example.com/Default.aspx.

If you are using iFinity, most of the time the url problems will be solved. However, due to some server setting, the default.aspx name cannot be removed. In this case, all you need to do is to make a simple change to the DNN Logo Skin Object.

For DNN 5.1 Above, please scroll down for solution.

To do this, FTP access to /httpdocs/admin/Skins and look for Logo.ascx.vb.

Open it using notepad or other development programs like dreamweaver or visual developer and look for this line: (Should be in line 73 be default)

hypLogo.NavigateUrl = GetPortalDomainName(PortalSettings.PortalAlias.HTTPAlias, Request) & “/” & glbDefaultPage

Now all you need to do is to remove this code:

& glbDefaultPage

Save it and upload it back to the same directly. Walla! You can change your logo much easily from Portal Admin Setting while having a clean SEO friendly URL!

Unfortunately, I still haven’t figured out a simple method to remove the Home.aspx which most of the DNN users are having the same problem. If you know how to make your DNN auto generated home page url convert into your root domain name automatically , please share with us!

Update: This is the solution to remove relundant default.aspx in DotNetNuke 5.1 Logo Skin Object.

To do this, FTP access to /httpdocs/admin/Skins and look for Logo.ascx.vb.

Look for these lines: (Around line 78)

If Host.UseFriendlyUrls Then
hypLogo.NavigateUrl = FriendlyUrl(Nothing, “~/”, PortalSettings)
Else
hypLogo.NavigateUrl = “~/”
End If

Change FriendlyUrl(Nothing, “~/”, PortalSettings) to GetPortalDomainName(PortalSettings.PortalAlias.HTTPAlias, Request) & “/”

Don’t Let Search Engine Spider Follow Your Login and Register Page!

Monday, May 4th, 2009

Crawl prioritization: Search engine robots can’t sign in or register as a member on your forum, so there’s no reason to invite Googlebot to follow "register here" or "sign in" links.
Source: Google Webmaster – About rel="nofollow"

So what is crawl prioritization? According to Google suggestion, a page should keep its amount of links under 100. The reason is pretty simple, avoid spam. Most of the websites put their Login and Register links on top of the page where search engine’s spiders crawl it within the first few lines of the source code. This is a waste of resources for search engine as well as the visitors.

To keep this post short, just to remember this few points:

  1. Less links means your visitors will have a better chance to click on the right and valuable links.
  2. Lots of links will only confuse your visitors. Are you trying to make them accidentally click on ads?
  3. Let spiders focus and index on important links by skipping the pages with no content and repeated links. For example, login, Home and Register page.
  4. Less links means faster indexing and less broken links.
  5. It is pointless to let spiders follow javascript links. The spiders are not smart enough to do any javascript call and action. Just put rel="nofollow" to skip it.
  6. Too many links will confuse the search engine and thus not giving you sitelink on SERP.

If you’re a DotNetNuke users and wish to put rel="nofollow" on your login or register link, the simplest way to do is download login.ascx and user.ascx from /httpdocs/admin/Skins

All you need is to add nofollow tag as following example:

<asp:LinkButton rel="nofollow" ID="cmdRegister" runat="server" cssclass="RegLog" CausesValidation="false"></asp:LinkButton>

That’s all! Happy SEOing.

SEO Tips: what is Canonical link and how to use it.

Tuesday, February 17th, 2009

Few days ago "canonical link" has become a hot keyword due to the recent announcement from Google, Yahoo and Microsoft on the solution on the "duplicate content penalty". You may find more advanced explanation on duplicate content penalty in this Demystifying the "duplicate content penalty" post.

If you dig more on this topic, you may found that canonical url issue has been discuss over and over again and you can trace back to some articles back from year 2006. (Deftly dealing with duplicate content and Google Canonical URL Issues and 301 Redirects). The long waited solution is actually simple, all you need to do is add rel="canonical" in the page header:

   1: <head>
   2: <link rel="canonical" href=http://www.example.com/product.aspx?item=Big /> 
   3: </head>

Here’s a very important note where most of the people confuse and got it wrong: You need to add the link tag in all duplicated page/url and the page you want Google to emphasize on! (Most of the people thought they only need to add <_link rel="canonical"… in the page you want.). Maybe the word canonical really confusing…

Here’s an example:

  1. http://www.example.com/productA.html">http://www.example.com/productA.html
  2. http://www.example.com/productA.html">http://www.example.com/productA-BIG.html

The second url basically is a query string url which change the item size to BIG but all other product information is very close to the productA.html.

Thus, you need to add <link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish" /> to productA-BIG.html but not productA.html.

However, sometimes the url is a query string url which in fact that you actually don’t have the page but being virtually called out based on user’s (robot) request. For example, inside productA,php has 3 options (Small, Big, Custom) and when visitor click on the BIG option, the website will send a query to the server and generate a dynamic query url that looks like: productA?item=BIG which the content is pretty much the same but the photo and size describe in the content.

So you just can’t add the <link> tag into a virtual page right? So in this case, you use need to add it in the productA.php which whenever query based generated url from productA.php will have the tag inside.

To emphasize again, you need to put your preferred page to be indexed’s url inside the <link rel="canonical"> tag and put the tag between every pages’ HEAD section (<head></head>) that you think is duplicated.

If you still blur blur, try view the source code of this page provided by wikia.com as recommended by Google. You’ll notice that the source code on the URL http://starwars.wikia.com/wiki/Nelvana_Limited specifies its rel="canonical" as:http://starwars.wikia.com/wiki/Nelvana. (i.e. index Nelvana but not Nelvana_Limited)

Make sure you read this Specify your canonical post in Official Google Webmaster blog and Yahoo’s Canonical blog post, or Microsoft’s canonical blog post.. for further researches and understanding. Another great news is that Canonical Link Tag is adopted by any search engine when crawling and indexing your site.

Question: So should really give it a damn?

Answer:

If you have a blog like BlogSpot and wordpress, you actually no need to care about this unless your theme is kinda tricky for the search engine to know which one is the permanent article url link. Anyway, Joost made a canonical plug-in for WordPress, a plugin for e-commerce software package Magento, and also a plug-in for Drupal. For me, I think the wordpress plugin is totally useless after I installed in this blog. (I’ll uninstall it soon).

However, if you have a website that has a lot of dynamic query based url or simply just have many duplicate content that can’t be avoided, rel=”canonical” this your savor.

Question: Wait! My blog in BlogSpot.com and wordpress has duplicate content because my blog first page show the same content in the one in permanent link??!

Answer:

No you don’t. because almost all blog platform publish post with a permanent link (Your article real location), modern search engines will follow index the permanent link and because the main page normally shows more than one article, which already made the page different from the others.

DotNetNuke Custom Error Page, 404 Page Not Found Redirection

Wednesday, January 21st, 2009
Often, DotNetNuke users never bother about URL issues which actually has a great impact on SEO especially your site is very old which has many old links from other websites and you have too much content to manage.

Even which the URL rewriter module like URL Master from ifinity or PageBlaster Module, they still have their limitation. Here, I’m going to talk about the new trend on URL redirections and general practice and DotNetNuke Method.

If you start from a fresh DNN new Website, you have nothing much to concern on the old url from the past. If you somehow migrate your website from a non-DNN to DNN website, you’re pretty much in worst case scenario. To cut it short, the best url redirection is to use 301 soft redirection. So what is 301 Redirection has to do with DNN?

301 Redirection

How to do 301 Redirection without touching IIS? Simplest way is to use URL Master from ifinity. One thing that you should always remember to do is: COPY DOWN THE OLD URL OF THE PAGE/CONTENT BEFORE YOU DELETE IT! Most of the people deleted the page and forgot which url need to be redirected.

If you need to change the URL of a page as it is shown in search engine results, we recommended that you use a server-side 301 redirect. This is the best way to ensure that users and search engines are directed to the correct page. The 301 status code means that a page has permanently moved to a new location. —From http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=93633

In ASP.NET There is no need touching the IIS to do 301 Redirection, so do in DotNetNuke.

To sum up, just do redirection whenever you delete or move the page location.

*Remember NOT to Redirect all the pages into same page like home page. You will be penalized by Google and having this message: "Too many redirections to single URL." in the Google Webmaster Tool, and yup! the page will be de-indexed.

404 Page Not Found

So how to make a Custom Error Page for DotNetNuke? If you Google around, people will tell you do to IIS to do redirection. WTF? How am I going to do it in Shared Hosting then? The answer is, with Control Panal like Plesk, simply go to "IIS Setting" or "Custom Error Page" and type in the destination URL of your custom made error page and it is done! But that is stupid way.

By using the method above, all of your applications in the server will be redirected to the page! Since we only need to redirect 404 page in DotNetNuke right? Here comes the web.config file. To explain a bit further, DotNetNuke has it own Error Page in the root of DNN installation already which is ErrorPage.aspx. That file is actually trigger only when your DNN has configuration errors like failed to connect to database, module crashed or DNN installation failed. Most importantly, it has a ugly design that doesn’t match your website!

So, the easiest way (I never thought it is that easy, those ‘experts’ in DotNetNuke’s forum always goes too far for a simple solution) is as above:

How to make Custom 404 Error Page in DotNetNuke?

1. Create a page in your DotNetNuke and choose a skin and container that matches your design. Yup! Just like how you create a normal page as always.

2. Access to your DNN root files via FTP. Find your Web.Config File, download it and open using notepad.

3. Find (Ctrl+F) this line: <customErrors mode="RemoteOnly" />
and replace it with "
<customErrors mode="RemoteOnly" defaultRedirect="/Whatever-you-like.aspx" />

The mode attribute can be one of the following:
* On – error details are not shown to anybody, even local users. If you specified a custom error page it will be always used.
* Off – everyone will see error details, both local and remote users. If you specified a custom error page it will NOT be used.
* RemoteOnly – local users will see detailed error pages with a stack trace and compilation details, while remote users with be presented with a concise page notifying them that an error occurred. If a custom error page is available, it will be shown to the remote users only.

So, if you’ve already created a page called "/Whatever-you-like.aspx" in first step, then just put it inside "defaultRedirect". And you may try to typed in wrong URL to visit your website, you should see this: http://www.example.com/Whatever-you-like.aspx?aspxerrorpath=/wrong.aspx

Remember that you can redirect the 404 Error Page to other website also, in this case, just type full url with http:// in inside the "defaultRedirect" attribute.

The best practice is to include your website navigation menu, sitemap and search box for the visitors that fall into this page so that they will not think that your website is broken or else. Therefore, try to match the DotNetNuke 404 Error Page same with your main design theme.

Furthermore, you can add Google Custom Error Widget (You can get your own custom code in Google Webmaster Tool) to show a search box which suggested links for visitors. Sadly, it seems that Internet Explorer is not supporting it if you’re using it in DotNetNuke. To be precise, the widget is still in beta and not quite ready for Dynamic websites.

One last thing, don’t forget to change the CustomError in web.config during DotNetNuke upgrade.

Hope this post solve your doubts and confusion in DotNetNuke Custom 404 Error Page. No need change IIS setting!

Another SEO trimming tools for lazy people.

Wednesday, January 14th, 2009

Well, found this new SEO trimming website just now. A good start if you don’t have time or knowledge about SEO. Just to remind you, Content always comes first. Don’t waste too much time on the SEO, spend more time on writings.

Here’s the link: http://search.seoeng.com According to them, all outbound link must put into a sentence / paragraph (Wish I found kinda overdone), and must put rel="nofollow" which is kinda pointless to some extend. (If every websites also put nofollow then what is the PR for?

As long as you don’t cheat purposely, there’s no need to make it 100% perfect in the SEO trimming because you might found what you did today is no longer matter tomorrow.

Content is King!

(Just another thing, it is not free one.)

A summary of PageRank Building Points.

Thursday, December 18th, 2008

The following content mostly adopted from  http://www.googleguide.com/improving_pagerank.html which most of the people doesn’t know about it:

In addition to considering the number of links to your page and the ranking of the linking page, to compute a page’s PageRank, Google considers hundreds of factors including

  • how fast a site is gaining links
  • how long the links persist
  • when your site acquired the links
  • the click through rate (CTR) of Google’s search results, cached pages, favorites on the Google Toolbar
  • the stickiness of your site (i.e., the effectiveness of your site in retaining individual users)

Most of the websites now are using rel="nofollow" to avoid passing Pagerank weight to the link. However, due to the other factors like above, if still worth you to link it. After all, if you’re getting link from valuable website that can bring in actual visitors, who cares about the pagerank? So stop wasting your time to submit url to link farms.

You don't sell in MLM, you buy it.

Tuesday, December 9th, 2008

If you are a member of any multi level marketing program, you will know that you do not sell your products to your prospects, you ask them to buy from you. I’m not sure if you can understand the difference behind it or not.

You see, if you sell a product to customer, there will be doubt and resistance. Therefore, the smart MLM people play with your brain and make you buy from them with you own will. From a active strategy to passive one (In term of Emotionally).

Yes, everyone buy a thing based on his/her emotion. A fan of an artist see no difference between RM 19.90 and RM 49.90 a CD. A ticket to a concert has nothing to do with the price but the availability of the seats.

99% of the super sellers sell things other than the product. Present a lot of the crab that people want to listen and that’s it. There’s no need to tell people what you know, just tell them what they know! I’m going to be evil in sales.

I’m going to write a mini report: The Devil’s Guide to Cheat Money Online. Selling hot at USD 6.66!
—————————————————–
The stupid tune money card still haven’t credit back my money. Screw them!
—————————————————–
SEO Tips:

  1. Title tag is the most important thing in you web page, it is like a title of your composition. Always include this: Your website name, Page Name or Content/Article Name. For example:
    SEO Expert – lesson one: How to write a good title for your webpage.
  2. You need to have a clear title structure in all of your web pages that match with your url / filing structure. i.e.
    http:www.seo-expert.com/lesson/how-to-write-a-goog title-for-your-webpage.
    SEO Expertlesson one: How to write a good title for your webpage.
  3. The above example are mostly applicable for blog and article publishing. For traditional webpages, it is better to put web page name in front. i.e Advance Website Lesson – SEO Expert.
  4. Try to include keywords that match with your meta description and content keywords. i.e.
    SEO Expert – Website lesson 1: How to write a good page title for your webpage.

In the example above, in stead of using the keywords “lesson” and “Title”, I’ve changed it to a more meaningful and accurate combination of keywords so that search engine will know I’m writing about website lesson and not just another ‘lesson’.

As keywords becomes very competitive, one to three keywords are getting meaningless to search engine and searcher. Therefore, you need to secure at least 3 keywords to secure your position for future. For example, you can turn website lesson to Advance Website Lesson. Now you have 3 keywords (one word keywords are useless): Advance Website, Advance Website Lesson, Website Lesson,(Lesson, website and Advance)

Another example: In this blog post, My post title is far away from what I written in the content. The keywords used in the title is not enough and not matching the keywords in the content. This article will hardly get listed in the SERP (Search Engine Result Page) although it will be indexed.
Which making this post kinda useless as it won’t attract organic traffic (Self Come Visitors) from Search Engine.