Archive

Archive for February, 2013

The Google web Directory Smack Down – The Good the bad the Ugly

February 25, 2013 Leave a comment
Google cracks down on web directories.

Web Directory Submission

Why can Google just not index these web directories they believe to be not so worthy? Google can still let company’s submit to directories but do not have to index these directories. Sure Google can still then chose which ones are valid or not.  So what is now considered an honest legitimate directory for safe inclusion? Well, it should be safe to say that Manta, Merchant Circle and those big name quality sites are as safe now as they were before this change. But of course that is not etched in stone.

The Google Attack

Google is attacking the low quality sites that you can find free directory submission too. Or the directories that require a minimal listing fee. This new change in algorithm now shows more shift to quality vs. quantity as I personally have been saying for some time now. I also believe this is more push for Google’s authorship program in place as well.

This is also going to cause a reduction in the resources Google needs to maintain equipment, personnel and management to provide quality search results. Google may also be trying to force out some of these issues because of the all to well-known spam epidemic we all see every day on the web. Or another aspect of it may be to bring more reason to the table for companies to use Google AdWords. This would seem to be a scare tactic as well as a strategical move to force companies to do so.

The Power of Google

But one thing to keep in mind through all of these changes. Do not forget about the other search engines available. These other search engines still produce desirable results as well. Just because Google say’s that the directories are not longer good, does not mean that these other search engines do not. You can not let yourself get pigeon holed into just Google. But the down side to that thought is the greatness of Google.

For example you continue to use these directories that Google deems no longer valid. You may be okay with those other search engines but then you get the big “NO, NO” from Google. As a result you climb in other search engines but take the plunge on Google. Google has the ultimate control, which is why the option of using these directories actually goes away. Google is essentially controlling these other search engines because of that outcome of their authority.

Window and Linux Hosting Plans

Loss of Anchor Text

Now with all that being said, what happens to anchor text from these changes. Clearly many company’s have used these directories for link building and the availability of generating percentages of anchor text in an effort to produce a desired result for the keywords of target. This now generates fewer options to target keywords through anchor text manipulation through these directories. Which in turn puts more emphasis on web content and authorship of your content. So producing quality content is ever so important because you then are attaching yourself to it and allowing for some kind of anchor text possibility through the use of your own web content being created.

Conclusion

It is in my opinion that Google may not be necessarily trying to undermine their competitors, but actually trying to create a better Internet. Sure it seems a bit shady, which it might be; but as we all know the Internet is full of spam. If company’s or individuals are forced to provide recognition to themselves for the work they are completing, why not make them attach something to it proving they are the producers of the work.

Although I can not agree that penalizing work that has already been done by company’s which has worked fine for years is the correct thing to do by Google at the same time. Google must create a way to not penalize these company’s for years of web directory submissions. It is just not fair for Google to yank the rug out from underneath these company’s. To much is at stake. Google should just stop indexing these web directories of insignificance.

By allowing company’s to still use these directories advertising can still continue through these directories without being indexed by Google. This still can provide a means of advertising without being penalized. Because you never know when someone is going to come to your business online and where they just might come from. Not all business is generated through someone doing a search on Google or some search engine.

“SEO changes, stay current”.

About Ty Whalin

I am a web designer, SEO specialist, programmer and internet marketer entrepreneur. I attended Central Florida Community College where I majored in Computer Information Administration and Rasmussen College studying Computer Information Technology. I am the Founder and CEO of Link Worx Seo, played drums for almost 30 years, father of one daughter and enjoy everything life has to offer.

Follow us on TwitterJoin us on FaceBookFollow us on LinkedInFollow us on PinterestFollow us on YouTubeFollow us on WordPressLink Worx SeoCome Join me on Google+

Bookmark and Share

How to Handle Cold Fusion Errors – onError() Function and More

February 17, 2013 Leave a comment
Adobe Cold Fusion 10 by Adobe

Adobe Cold Fusion 10

After lots of research surrounding the onMissingTemplate() function, cflog, and creating a custom error log, it became very event that the information you have would be great, I say great except; a server issue….

Source: Colorblind Programming

<cfsetting showdebugoutput=”no” requesttimeout=”200″ />
<cfoutput>
Server.ColdFusion.RootDir=#Server.ColdFusion.RootDir#
<!— quick and dirty way of getting the file separator —>
<cfif find(‘/’,Server.ColdFusion.RootDir)>
<cfset s=’/’>
<cfelse>
<cfset s=’\’>
<!–cfif>
<cfset logsFile = Server.ColdFusion.RootDir & “#s#logs#s#yourFile.log”>
<cfif not fileExists(logsFile)>

Error: log file #logsFile# does not exist

<cfabort />
<cfelse>

Showing contents of #logsFile#

<!–cfif>

</cfoutput>

<pre>
<cfscript>
myfile = FileRead(logsFile);
WriteOutput(“#myfile#”);
</cfscript>
</pre>

Okay, now that you have looked at this nice bit of code – the example would be a working solution except for one slight factor, not being able to read the log files on a shared server. Just to verify it. I contacted the hosting company directly to find out whether they allowed this option or not and was told “NO”. Of which in turn – also meant; after finding that out, the cflog tag at this point is considered useless because you can not read the log files on a shared server, main reason it can not be created and secondly it can not be read and then in turn cfoutput.

This was unfortunate since I was using the cflog tag in my Application.cfc file and it does not allow to read or create a .log file on the shared server. So the solution was to just write the errors to different error log files under the root directory named “logs”. O’ in case you were wondering, you can not use directory path hierarchy for cflog file on the server either.

Solution

Depending on the type of error system being created, it seemed logical just to create a system that captured the errors from the Application.cfc file as much as possible. I managed to use some custom error system structure by utilizing the cftry and cfcatch tags on certain areas.

Secondly, anything that was not caught by this custom error system was then caught by the onError() function from the Application.cfc.  Also if my memory serves me well, the cferror tag can only be used for catching errors in an Application.cfm and not Application.cfc. Believe I read that in some CF10 documentation.

Next, was to output the errors to the corresponding page such as 400, 401, 403, 404, 500 etc… These are the custom pages created and not system defaults, which are crap anyway. In order to show the errors being caught by the Application.cfc, I made use of the onError() function and wrote the exception errors to a .rtf file and then output the exception errors onto the page of choice by reading the file and outputting the text onto the error page.

| Event: #arguments.eventName#
| Detail: #arguments.exception.detail#
| Message: #arguments.exception.message#
| Stack Trace: #arguments.exception.stackTrace#
| Type: #arguments.exception.type#
| Name: #arguments.exception.name#
| Template: #arguments.exception.tagContext[1].template#
| Line: #arguments.exception.tagContext[1].line#
| Raw Trace: #arguments.exception.tagContext[1].raw_trace#

Of course you can pick which one’s you want to write and output from the rich text file, but you get the picture. After a little trial and error (“HA, HA”)… I ended up being able to output the errors the way I wanted and some crappy system default error page. So as you can see, I now have logged my errors and then outputted those errors onto the custom error pages.

Window and Linux Hosting Plans

OnMissingTemplate()

The onMissingTemplate() function was a tad different. The difference here was finding a way to show the 404 page when the file did not end in .cfm. Let me tell you, not knowing that the onMissingTemplate() function does not work on any other types of files; but .cfm files was the first step in making this function work correctly. Could not figure out for a little while why it just did not do what I wanted it to do.

Reason being, thought it would be easy to just do redirects with the onMissingTemplate() for non-existent pages or for redirecting old pages to the new pages. Well, that did not go so well at first. After realizing the onMissingTemplate() function only works with files ending in .cfm, I decided to just do a mod rewrite with a .htaccess file. Problem solved for 301 redirects.

Now, I did some further research and came across some code written by Ben Nadel and got a few tips from Ray Camden that helped out along the way with this onMissingTemplate() function. The code I still am playing around with but have found some usage for it all ready was created by Ben Nadel.

<cfset requestedURI = listrest(cgi.query_string, “;”) />
<!— strip port —>
<cfset requestedURI = Replace(requestedURI, “:80”, “”, “ALL”) />
<!— if just asking for folder’s default doc, append index.cfm —>
listlast(requestedURI) does not contain “index.cfm” and listfind(“gif,jpg,png,pdf,xml,css,.js,htm,tml”, right(requestedURI, 3)) eq 0>
requestedURI contains “/?”>
<cfset requestedURI = replace(requestedURI, “?”, “index.cfm?”) />
<cfelseif requestedURI contains “?”>
<cfset requestedURI = replace(requestedURI, “?”, “/index.cfm?”) />
<cfelseif Right(requestedURI, 1) neq “/”>
<cfset requestedURI = requestedURI & “/index.cfm” />
<cfelse>
<cfset requestedURI = requestedURI & “index.cfm” />
</cfif>
<!— <cflocation url=”#variables.requestedURI#” addtoken=”false” statuscode=”301″ />–>
<cfabort> —>
</cfif>
<!— <cfoutput>
<!— <cfheader statuscode=”404″ statustext=”Object Not Found”> —>
<p>#variables.requestedURI#</p>
<p>This document can not be found.</p>
</cfoutput> —>

I commented out the bottom portion because I did not want the page to go to the home page each time a file object was not found. Plus, the 404 code caused me to be in a continuous redirect loop since I had already used it above this code. As for the output I did not need that as well since the output I wanted was being written to my logs/.rtf file with the exception errors or whatever error message I chose.

After implementing this snippet, “Thanks Ben” – I was able to output to my 404 page my errors even when a file did not end in .cfm. As you can tell, you can take this error system as far as you like, but in the end; do whatever works best for you.

This was the only solution I could create for getting around the issue concerning a shared hosting environment.

“On to the next task”.

About Ty Whalin

I am a web designer, SEO specialist, programmer and internet marketer entrepreneur. I attended Central Florida Community College where I majored in Computer Information Administration and Rasmussen College studying Computer Information Technology. I am the Founder and CEO of Link Worx Seo, played drums for almost 30 years, father of one daughter and enjoy everything life has to offer.

Follow us on TwitterJoin us on FaceBookFollow us on LinkedInFollow us on PinterestFollow us on YouTubeFollow us on WordPressLink Worx SeoCome Join me on Google+

Bookmark and Share