Wrox Programmer Forums

Need to download code?

View our list of code downloads.

| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read
BOOK: ASP.NET 2.0 Website Programming Problem Design Solution ISBN: 978-0-7645-8464-0
This is the forum to discuss the Wrox book ASP.NET 2.0 Website Programming: Problem - Design - Solution by Marco Bellinaso; ISBN: 9780764584640
Welcome to the p2p.wrox.com Forums.

You are currently viewing the BOOK: ASP.NET 2.0 Website Programming Problem Design Solution ISBN: 978-0-7645-8464-0 section of the Wrox Programmer to Programmer discussions. This is a community of tens of thousands of software programmers and website developers including Wrox book authors and readers. As a guest, you can read any forum posting. By joining today you can post your own programming questions, respond to other developers’ questions, and eliminate the ads that are displayed to guests. Registration is fast, simple and absolutely free .
DRM-free e-books 300x50
 
 
Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old November 2nd, 2007, 06:45 PM
Authorized User
 
Join Date: Jan 2007
Location: , , .
Posts: 72
Thanks: 0
Thanked 0 Times in 0 Posts
Default TBH Search Engine Optimization

Hi guys.

Just thought I would get other people's thoughts/experience with this.

Before I publish my clients TBH based site I wanted to make sure that is as indexible as their existing STATIC html site.

I downloaded a copy of Zoom Search Engine (http://www.wrensoft.com/zoom/index.html) to test. As the content pages inherit the header information from the master page and the articles pages have a title of Show Article... the results are not very descriptive:

 
Quote:
quote:14. My Company: Series D Rotary Lobe Pumps
Quote:
About My Company Ltd., it's services, pumps and company
Terms matched: 1 - Score: 22 - URL: http://localhost:1124/WebSiteName/(X(1)A(qFwMD6VSyAEkAAAAZjg3MThmMTAtNTQwMC00NzA1LTg yM2UtMTkxZTYxYjc2OTRmnPkJhFaWezOWOePsMMC7KBB2x3s1) )/ShowArticle.aspx?ID=24
15. MyWebSiteName.com: Browse Articles
About My Company Ltd., it's services, pumps and company
Terms matched: 1 - Score: 19 - URL: http://localhost:1124/WebSiteName/(X(1)A(fI6mEaVSyAEkAAAAYWQ0NDYwNjEtYzQ4NS00ZjZlLTl iYjAtM2MxZDhjMGExY2Fj8xOMNMUcEOhJ3gxsgjaRqc1qppk1) )/BrowseArticles.aspx?CatID=6&AspxAutoDetectCookieSu pport=1
16. MyWebSiteName.com: Browse Articles
About My Company Ltd., it's services, pumps and company
Terms matched: 1 - Score: 19 - URL: http://localhost:1124/MyWebSiteNameDotCom/(X(1)A(zpypEaVSyAEkAAAAOTk0YWE3ZDUtODdlNy00MTQzLWI xOWQtYTFjMmViNDdjZDZiwyndthPmDPpOtoUMUcmS7piP4lU1) )/BrowseArticles.aspx?CatID=4&AspxAutoDetectCookieSu pport=1
17. MyWebSiteName.com: Browse Articles
About My Company Ltd., it's services, pumps and company
Terms matched: 1 - Score: 19 - URL: http://localhost:1124/MyWebSiteNameDotCom/(X(1)A(9yOrEaVSyAEkAAAAYzlmMDBjYWUtMTk0Ni00OTRhLTh mY2MtZDhmYWU1NzM4MDhh5V3LQQOtoEuUbSHliqLnzqNaYto1) )/BrowseArticles.aspx?CatID=11&AspxAutoDetectCookieS upport=1
Although these all link to different pages the search results do not give any indication of what they are linking to.

Has anyone else noticed this? Im not sure whether other search engines will index in the same way.

As it is easy enough to expose the header information of the master page to it's content page I am planning to just create a MasterBase class that allows title/description etc to be overwritten. This way for my articles I can override the title as say MyWebsiteName: ArticleTitleHere and description as my article abstract.

Be good to hear other peoples opinions on this.

  #2 (permalink)  
Old November 3rd, 2007, 02:07 PM
Authorized User
 
Join Date: Jan 2007
Location: , , .
Posts: 72
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Just thought i would post my solution for this. SEO is a huge topic but i do believe these changes do make TBH more indexable.

[u]Page Titles</u>

Like many of you I aim to use the TBH structure for other websites. Currently all my content pages have their Title property set to "MyWebSiteName: PageName". I think this looks good but as the size of the site grows it will be a real pain if you then decide to name your site something different or use the same template for another site.

In addition to this (as already discussed), when I view different articles within my site, I don't want every one to have a page title of "MyWebSiteName: Show Article". I want it to appear as if they are viewing a completely different page in my website (rather than dynamically driven content from a database.

[u]META Description Attribute</u>

Similarly to the Title, I dont want every page to have the same "Decription" <meta> atttibute. Many search engines use the description data when showing search results. If there is a link to a page regarding a specific product, I do not want my description to show as "Welcome to MyWebSite.com, on this site we do all sorts....". I want it to be associated with the page being displayed.

[u]Solution</u>

First thing was to add 2 new properties to my custom configuration section in Web.Config:

Code:
  <retroWebSection defaultConnectionStringName="LocalSqlServer" webSiteName="MyWebsite.Com" 
                   webSiteDescription="Some description">


Then I added 2 new properties to my RetroWebSection Class in App_Code/ConfigSection.vb.
I set a default value for the PageTitle property so that if one was ommitted from web.config I can show the name of my template:

Code:
        <ConfigurationProperty("webSiteName", DefaultValue:="RetroViz.Cms")> _
        Public Property WebSiteName() As String
            Get
                Return CStr(Me("webSiteName"))
            End Get
            Set(ByVal value As String)
                Me("webSiteName") = value
            End Set
        End Property

        <ConfigurationProperty("webSiteDescription")> _
        Public Property WebSiteDescription() As String
            Get
                Return CStr(Me("webSiteDescription"))
            End Get
            Set(ByVal value As String)
                Me("webSiteDescription") = value
            End Set
        End Property


Once added I can access both properties (or values from web.config) from

Code:
Globals.Setting.WebSiteName
Globals.Settings.WebSiteDescription
Fairly simple :D

Now I needed to dynamically add the title and description attributes when required. One thing I took into consideration is that I only really wanted to override the Page Title property on my ShowArticles.aspx?.. pages so needed some way of preserving the Title values for other pages.

I decided to add a MasterBasePage class (similar to BasePage) that my MasterPage.Master page can inherit from. In there I defined two public properties for PageTitle and PageDescription that can be accessed by my ContentPages as well as the code to dynamically change some <meta> tags in the head of the page:

Code:
Imports Microsoft.VisualBasic
Namespace Retro.Web.UI
    Public Class MasterBasePage
        Inherits System.Web.UI.MasterPage

        Private _pageTitle As String
        Private _pageDescription As String

        Public Property PageTitle() As String
            Get
                PageTitle = _pageTitle
            End Get
            Set(ByVal value As String)
                _pageTitle = value
            End Set
        End Property

        Public Property PageDescription() As String
            Get
                PageDescription = _pageDescription
            End Get
            Set(ByVal value As String)
                _pageDescription = value
            End Set
        End Property

        Protected Overrides Sub OnLoad(ByVal e As EventArgs)
            If String.IsNullOrEmpty(PageTitle) Then
                _pageTitle = Me.Page.Title
            End If
            If String.IsNullOrEmpty(PageDescription) Then
                _pageDescription = Globals.Settings.WebSiteDescription
            End If
            Me.Page.Title = Globals.Settings.WebSiteName + ": " + _pageTitle
            Dim metaTag As HtmlMeta = New HtmlMeta()
            metaTag.Name = "Description"
            metaTag.Content = _pageDescription
            Page.Header.Controls.Add(metaTag)

            MyBase.OnLoad(e)
        End Sub
    End Class
End Namespace
Then in the code behind for my MasterPage:

Code:
Namespace Retro.Web.UI
    Partial Class MasterPage
        Inherits MasterBasePage
    End Class
End Namespace
And thats it.

If I load my Default.aspx I get my website name and the Title property set in the ContentPage definition i.e. "MyWebSite.Com: Home". If I view the source for the page I can see the Description META information is the text set in my web.config file.

For my Article pages, I first need to add the following to the top of my ShowArticles.aspx page to allow the MasterPage properties to be accessed:

Code:
<%@ MasterType VirtualPath="~/MasterPage.master" %>
Then I can add the following to Page_Load event:

Code:
                Master.PageTitle = article.Title
                Master.PageDescription = article.Abstract


Now when I re index with Zoom Search, not only do I get a title that relates to the actual article, but also the related description from the Abstract field of that record.

Quote:
quote:100 results found.


10 pages of results.
21. MyWebSite.Com: Launch of new website!
MyWebSite.com has been completely revamped. Our new site will help you to find the pump application you require and give you access to online s...
Simple as that. If anyone has any further suggestions or improvements that could/should be made then please do comment. It's in VB.net so you may want to translate if working with the C# version. My namespaces are the same as TBH but its Retro.Web.UI instead of MB.TheBeerHouse.UI (and so on and so forth)

Thanks,
  #3 (permalink)  
Old November 5th, 2007, 04:11 PM
Authorized User
 
Join Date: Jan 2007
Location: , , .
Posts: 63
Thanks: 0
Thanked 0 Times in 0 Posts
Default

As a side note, if you really want to be indexed well by google do the following:

For all your articles, set Page.Title to include the article's title (which is explained above). Google hates pages that look similar to other pages. So, as a corollary, Google tries not to index pages who's location looks like duplicates, i.e.: "...showarticle.aspx?ID=xxx" because not only do all of these pages look similar, but:

1) the crawler dislikes crawling database driven pages like this, since there can be millions that it has to crawl
2) google tends to avoid crawling pages that specifically use "ID=" in the query string, which is frequently used on the net to show a database driven page (like TBH articles).

So, I would also recommend using url rewriting. Here's a tutorial for it here:
http://weblogs.asp.net/scottgu/archi...h-asp-net.aspx
I've implemented it on my site, and the number of my pages crawled by Google afterwards tripled in a couple of weeks. Simply making it look like "...showarticle1482.aspx" instead, will spark this improvement.

  #4 (permalink)  
Old November 5th, 2007, 04:55 PM
Friend of Wrox
 
Join Date: Aug 2006
Location: , , .
Posts: 142
Thanks: 0
Thanked 2 Times in 2 Posts
Send a message via MSN to vantoko
Default

thanks for the tips.
I will try to implement them

ooshola, regarding the redirecting, does the submit function still work (adding comments etc)

one tip I would add (is already mentioned this in the forum) is to use the css friendly control adapters.
this provides cleaner html output

also run the site against a validator (http://validator.w3.org/). A valid site is always better processed than in invalid site

 


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Search Engine Optimization radiohalo5 ASP.NET 1.x and 2.0 Application Design 4 November 27th, 2010 09:44 PM
Announce: Search Module for TBH available jimibt BOOK: ASP.NET 2.0 Website Programming Problem Design Solution ISBN: 978-0-7645-8464-0 54 August 9th, 2009 04:42 PM
Search Engine Optimization: Textarea, HTML comment anshul HTML Code Clinic 1 November 10th, 2005 07:47 AM
Search Engine for Full-text Search Kala ASP.NET 1.0 and 1.1 Professional 2 August 29th, 2004 02:16 AM
Search engine that search through local drive! wenzation Classic ASP Basics 0 August 26th, 2003 09:15 PM



All times are GMT -4. The time now is 09:43 PM.


Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
© 2013 John Wiley & Sons, Inc.