Google Creates Duplicate Content for Me

February 19th, 2010

Google is creating duplicate content on websites. I started noticing this back in 2008, when Webmaster Tools identified some pages that were “broken” on the website. The curious thing about these pages was that they were not actually accessible via the website. But they were in the source code as a part of a Javascript function and Google appeared to have kludged together some URLs based on the root domain name plus the file being called in the Javascript function.

For example, in the ASP.NET environment, pages and code behind are often called via Javascript. Those pages carry variables to the server where they are often rewritten to be “search friendly”, before being returned to the browser. In other words, “products.aspx?id=12345″ gets rewritten on the server to be “super-dooper-blue-products”. The actual “page” being called in Javascript never makes it to the browser.

In looking at GWT back in early 2008, I discovered there were hundreds of URLs causing “404″ errors. All of these URLs followed the pattern of http://root-domain/products.aspx?id=xyxyz. And when I clicked them, yep, they were broken. The reason these URLs were broken was because of the way Google created, guessed at, the proper URL construction from the information they discovered in the Javascript function. Google took the page name and parameter from the function and appended it to the root domain where the function was discovered.

However, the “actual” page that was being executed was not http://rootdomain.com/products.aspx? The real URL structure was more like, http://rootdomain.com/directory1/directory2/products.aspx? When Google executed the erroneous URL that it had created based on its assumptions, the pages were broken because Google logic did not fully understand that the products.aspx page resided in a relative path rather than an absolute path.

Functional duplicate URLs occur when pages such as products.aspx are called in Javascript and also reside in the absolute path. In cases like this, Google pulls page names and parameters from Javascript functions and appends them to the root URL to actually create a functional (although non-intentional) page. Now Google’s assumed URL construction does render an actual page that functions correctly. But that functional page is a duplicate page because, at the same time, a rewritten URL exists that renders the same content.

A few months after making this unfortunate discovery, Google informed us to stop the practice of rewriting URLs. What? In the sense that Google is now collecting “raw” data pages before a rewrite, and that a rewrite can cause duplicate content, Google says that it prefers the raw version of the URLs, the dynamic URLs, rather than rewritten ones.

That would be fine and nice if so many websites weren’t already using URL rewrites. Secondly, even though Google prefers the dynamic URLs now, Bing certainly does not. It would make better sense if Webmasters could instead include a tag in their pages such as “meta name =’discovery’ rel=’noJS’” whereby Google would not try to execute Javascript to “discover” pages that would result in the creation of duplicate content.

Bookmark and Share

Life Without Cats

February 18th, 2010

I am a cat person. I didn’t choose this – I just am. Strange cats, “unsocial” cats, mean cats and nice cats alike have always approached me as if I were going to give them a special treat.

When I was living in San Francisco I studied Chinese herbal medicine as well as Native American herbal medicine. I actually took herbal medicine classes at the house of a Native American while I was working at a Chinese import company and learning about their methodology. The details of those courses of study are for another day. The point is, the Native American herbalist had several cats in her house and none of them were very social.

There were 25 students at the Native American herbalism class. When the single cat appeared in the classroom and began sniffing people and investigating the scene, most of the people in the room were grasping for the cat’s attention and trying to pet him. He evaded everyone’s advances until he got to me. I didn’t try to pet him. But when he made it to my side of the room he looked me over, gave me a sniff, jumped into my lap and went to sleep. And he stayed there for the next hour.

But being a cat person does not mean I choose to live with them. I am a dog person too and I have two dogs. And having dogs is not the reason I don’t have cats in my house, even though my vet insists that I will eventually cave in to the persistent requests of my wife and daughter. Living with a cat is not much different than living with a good friend. It sounds good at first but good friends seldom make good roommates.

I used to have cats several years ago (ok, 17 years ago). They came with the apartment. I lived very well with my German Shepard and two cats until I started dating someone who had a puppy. The cats had “trained” my Shepard. But the puppy had zero respect for the cats and wasn’t bothered by hissing and a little claw scratching. And that drove one of the cats mad.

And by “mad”, I mean insane and vengeful. I remember coming home from work and walking into my bedroom to find my cat looking at me while peeing on the bed. Coincidence? Maybe. Then she did it again the next day. And that was it. I found a new home for her and when I moved out of the apartment (the new tenants kept the other cat, as was tradition) I never lived with a cat again.

I’ll feed a stray if I see one and will still visit them at the local pet store. But my plan for now is to keep living without cats in my house.

Bookmark and Share

The 13th Floor – Superstition is Alive and Well

February 5th, 2010

Multiply 13 times 28 and the result is 364. How many days in a year? 365. “Moonths”, as they were, indicated lunar cycles and made a perfect calendar: 13 moonths in a year + 1 extra day.

And then 13 became unlucky, or evil, or something strangely superstitious so we changed the whole calendar system to “months” which range from 28 days to 31 days and the only way to keep up with it is by counting knuckles or remembering some silly rhyme.

But what really is strange is that I work in a modern building in downtown Atlanta and there is no 13th floor. As a matter of fact, I have been looking for a 13th floor in ANY building for quite some time now. Why do buildings routinely skip the 13th floor? Are we really that superstitious?

Well, yes, we are.

Bookmark and Share

Henderson Park Masterplan ReviewII

January 22nd, 2010

Last night I got a good glimpse into how government works at the local level and was pleasantly surprised. Henderson Park has acquired some extra land adjacent to the current park and last night was the second meeting with the community to go over options for how to use the new land. There were several representatives from the County, a couple of police officers and a dozen or so local citizens and everyone had a chance to voice their opinions and be heard. I haven’t seen a forum that open since attending a Quaker meeting.

For over a year a few of us have been trying to get the land approved for a community garden. We were concerned at first because of the need of a “master plan” from the County. But one year later, the master plan not only includes the land for the community garden, it includes some parking, a pavilion, playgrounds, walking trails and more. And these ideas came from citizens and it looks well on the path to breaking ground.

Hopefully the next steps will go as well as these initial ones and we will be tilling the ground in a few weeks.

Bookmark and Share

Upgrading WordPress – Google Analytics Plugin Error Prevents Login

January 19th, 2010

I have been considering making a blog post for months now and my circular logic (and a bit of indifference) has kept me away from the keyboard. I needed to upgrade my version of WordPress, I didn’t want to do it (headache!) so I just ignored my blog as a result. Today I had a more daunting task to tackle so, naturally, I took the path of less resistance and decided to upgrade my blog.

When I went into the dashboard, there was the persistent warning from WordPress “Upgrade Now!”. Ok, ok, enough already. I knew it was a bad idea to push the “automatic upgrade” button so I backed up my database and THEN pushed the automatic upgrade button. 10 seconds later, I got the all clear and everything seemed ok. That is, until I tried to login again.

When I tried a login I got the following error, “Fatal error: Call to undefined function is_site_admin() in /xxxx/xxxxx/public_html/wp-content/plugins/sem-google-analytics/sem-google-analytics-admin.php on line 20″. Well, crap. So I went back and used my backup database to restore. Nada. So I looked on the internets and found this great solution but I did have to make some adjustments.

Basically, go into the control panel on your host, go to the plugin section and modify the folder name for the google analytics plugin. When you change the folder name, it automatically deactivates the plugin and the problem is solved. I didn’t have a folder so renamed all of the associated .php files (2 of them) and it did the trick. That was 10 minutes ago and here I am writing a post.

Good luck!

Bookmark and Share