Prevent SSL redirect loop using WordPress and HAProxy

This is a first post in a series on how to use HAProxy in front of WordPress. I’m using HAProxy to offload SSL connections to a WordPress site. The site itself runs on an internal IP address on port 80 while HAProxy listens on incoming connections on *:80 and *:443. Connections to *:443 will be presented the correct certificate using HAProxy’s SNI-based certificate matching algorithm. I’ll write more about that SNI-based configuration in a future post. In this post I’m going to focus on the SSL redirect loop which is happening if you use Continue reading

Google Reader not refreshing RSS feed anymore

My RSS feeds on don’t get refreshed in my Google Reader account anymore. Usually, new posts on my site show up in Google Reader within minutes or hours. It looks like the problem started in February 2011 and my site isn’t the only site affected, according to this thread and another thread in Google’s support forum. New posts are automatically submitted to Pingomatic from WordPress and are visible in Feedburner. The feed also passes W3C’s feed validation. I don’t do any shady SEO stuff and I don’t spam Pingomatic with updates. What gives?

This site’s feed does have a couple of Google Reader subscribers, would you mind leaving a comment if you see this post showing up in your Google Reader? Thanks a lot!

Update 3-3-2011: Google is caching a completely outdated version of the front page of this site. It dates back to the beginning of February. I don’t think that’s a coincidence, it must have something to do with my feed not updating in Google Reader. Interestingly, newer posts can be found in Google’s index, it’s just the main page that seems to have some kind of an update ban on it. Weird!

Update 3-4-2011: A closer look at my site’s Google Webmaster Central report revealed that this site served almost two thousand 404 “NOT FOUND” HTTP response codes for pages in the gallery area. The gallery pages look fine in a web browser though. Googlebot gets the 404’s while at the same time in my web server’s log file a HTTP 200 “OK” return code is being logged. An outdated flickr photo gallery plugin is responsible for these errors, the plugin isn’t compatible with the latest WordPress version anymore and obviously does some really weird stuff with the response headers. My theory is that the ratio of good and bad (not found) pages seen by Googlebot was so bad, that Google decided to flag my site. I fired the outdated flickr plugin and installed another flickr gallery plugin called slickr-flickr. So, over time, everything should be back to normal, even though that’s probably gonna take a while. To speed things up a bit up I requested Google to remove the old 404 gallery links from the index so Googlebot won’t crawl those non-existing pages anymore.

Update 3-9-2011: Everything is back to normal, Google Reader caught up all missing posts just a few moments ago. Looks like I was spot on with my assumption.

kStats Reloaded – the fast statistics plugin for WordPress

StatPress & StatPress Reloaded move over, there’s a new WordPress statistics plugin in town! It’s called kStats Reloaded. Even though it’s still in beta I find it more useful than StatPress (Reloaded) because it’s a lot faster and the charts look better. It even has an option to import all your historical data accumulated by StatPress. Continue reading

Watch page load times when using WordPress social bookmark plugins

I’d like to make my blog posts more share-friendly by adding buttons at the end of every post for the most popular bookmarking/sharing web sites like Twitter, Facebook, Digg and so on. There’s a wide range of social bookmark plugins available for WordPress. A plugin that immediately caught my eye is SexyBookmarks. It looks great and you can choose between several catch phrases like Sharing is caring or Sharing is sexy.

Continue reading

Nofollow tag cloud for WordPress

I love the tag cloud widget that comes with WordPress. There’s just one thing that bugs me: it floods every post or page with lots of internal links that a search engine crawler will follow. The SEO community says that this could be seen as some sort of artificial link generation by a search engine and eventually lead to a disadvantage in a site’s SERP ranking. Having fewer internal links on a post should also pass a higher page rank to linked posts as well. See this post from Matt Cutts detailing how it makes sense to nofollow non-essential internal links:

There’s no stigma to using nofollow, even on your own internal links; for Google, nofollow’ed links are dropped out of our link graph; we don’t even use such links for discovery. By the way, the nofollow meta tag does that same thing, but at a page level.

Unfortunately, it’s not possible to instruct the built-in WordPress tag cloud sidebar widget to use nofollow tags for the generated links. Continue reading

How-to: Change all internal WordPress links from www to non-www

I recently changed my website’s WordPress URL from its www-version to the non www-version: changed to just As this may will confuse search engines and thus lower your visibility in organic searches, it’s recommended to configure a 301 (permanently moved) redirect from the old domain name to the new one. There’s lots of SEO information about redirecting domain names using mod_rewrite and .htaccess to be found on the web.

Now, some SEO experts claim that it’s important to change the internal links on a web site as well. As I’m occasionally linking to my own WordPress posts within my web site, all those links still point to the old www version of the domain name. So, is there an easy way to change all internal links from one domain name to another on a WordPress site at once? Continue reading

Must Read Posts: New version 2.0

After quite a long time with no updates I just released a new version of my WordPress plugin “Must-Read Posts”. The new version adds several configurable sorting options which was the most requested missing feature. With the exception of the custom sort order they’re pretty self explanatory and include:

  • Post date descending (latest posts/pages first)
  • Post date ascending (oldest posts/pages first)
  • Random (randomizes the sort order)
  • Custom

The custom sort order allows pre-defined ordering of posts or pages and was the default and only sort option in the earlier versions of the plugin. If you update from an earlier version of the plugin this still is the default sort order. The sort ordering option can be found on the widget’s configuration area.

In case you’re using the non-widget PHP function, the sort order parameters are:

  • date_asc
  • date_desc
  • rnd
  • custom

If you don’t specify a sort order, the default is “custom”. If you’re using a plugin like WP Super Cache don’t expect the random sort order to show a different order every time you load the page.

The plugin can be installed/updated from the plugins admin page within your WordPress site or downloaded here.

WordPress Plugin/Widget for Must Read Posts

Today, I was looking for a simple WordPress widget that allows me to statically display links to certain posts in the sidebar. I could have used the links widget but it wasn’t flexible enough for me. My idea was to use a certain custom field of a post or page as a trigger to display it in a widget. I searched for almost an hour but I just couldn’t find any simple, widget-capable WordPress plugins that could do this?! 

In the end, I ended up writing my own widget-capable plugin. I decided to publish it so anyone else can use it on her/his blog too. The plugin’s name is “Must Read Posts”. It shows your most recommended posts and pages in a sidebar widget or in a page. As the widget’s title is editable in the WordPress Dashboard you could change it to something like “Recommended Posts”, “Important information”, “Tips & Tricks” or whatever you like. Continue reading

How to prevent referer spam

Even though referer spam isn’t something new to black hat SEOs, WordPress blogs seem to get hit pretty hard with referrer spam these days.

Every time somebody clicks a link on a website, the browser sends the originating URL (the URL of the web page that hosts the link) to the target web server. This referer information can be parsed with web server log statistic software to show the webmaster where the web site’s visitors originated from. Continue reading