Use a custom prefix or suffix with YOURLS short URLs


The open source URL shortener YOURLS can be modified to add support for custom prefixes or suffixes.

I really enjoy the simplicity of YOURLS for self-hosted URL shortening, but it comes at the expense of configurable options, notably an inability to define a prefix or suffix for short URL keywords. Determined to find a way to append custom characters to the short URLs’ keyword string, I delved into the code.

YOURLS admin panel Continue reading…

‘XML Parsing Error: not well-formed’ with query strings


Long URL query strings with more than one parameter can result in XML parsing errors, such as “not well-formed” in Firefox.

If you use URLs for Google Analytics campaigns or otherwise just query strings with multiple parameters in XML files, browsers might have a hard time parsing your XML. In my case, Firefox’s XML parser failed to execute my OpenSearch XML file, citing a parse error in my custom campaign URL as seen below.

‘XML Parsing Error: not well-formed’ with query strings

Continue reading…

Add Alias Network Adapters to CentOS in ESXi


Learn how to add alias network adapters to CentOS in ESXi and avoid complications associated with duplicate port groups and separate vSwitches.

Depending on the configuration of your VMware ESXi server, it might be easier or necessary to add alias network adapters to CentOS or Red Hat servers on your hypervisor. In some cases, adding more than one network adapter of the same port group to a virtual machine causes routing issues. Workarounds such as adding a new vSwitch or physical NIC or manually defining routes from within the Linux server are not necessary in this case as you can add alias network adapters to CentOS in ESXi to use multiple IP addresses on a single network interface.

Add alias network adapters to CentOS in ESXi

Continue reading…

Why You Should Not Use WWW in URLs


Should you use WWW in your URL? No. In fact, there are many arguments for why you should not use WWW in your URL.

We question whether or not the WWW subdomain should be used in URLs primarily because of tradition. Perhaps only through habit, many webmasters (and some users) still use WWW to prefix their URLs.

The History of WWW

Although not required by any policy or technical standard, numerous websites use WWW in their URLs because of the long-standing practice of naming hosts based on the service they provide. The use of WWW for distinguishing web servers using DNS traces back to between 1989 and 1990 at CERN where British computer scientist Tim Berners-Lee invented the World Wide Web.

According to Paolo Palazzi, a colleague of Berners-Lee’s at CERN, the CERN website was supposed to be accessible via with their proof of concept on, but DNS records were never switched. WWW has since become a ubiquitous subdomain for websites.

The original World Wide Web logo, designed by Robert Cailliau
The original World Wide Web logo, designed by Robert Cailliau.

Continue reading…

Multiple Certificates with Multiple IPs on Apache Web Server


Serve multiple certificates on your Apache web server using multiple IP addresses without sacrificing browser compatibility.

All production Apache web servers must have as many external static IP addresses as they have certificates in order to maintain maximum client compatibility. Unlike standard HTTP traffic, which Apache can facilitate for multiple domains sharing the same IP address using name-based virtual hosts, some older browsers don’t play well with server name indication (SNI) on HTTPS.

SNI, while very convenient for serving multiple certificates, is most notably incompatible with all versions of Internet Explorer for Windows XP as well as Internet Explorer 6 and older on any operating system. SNI is also incompatible with a number of other browsers including Safari for Windows XP and some older versions of Opera Mini, Android’s default browser (2.0 and older), Windows Mobile’s default browser, and BlackBerry’s default browser.

Internet Explorer in Windows XP shows invalid name certificate error Continue reading…

‘Warning: Missing required field “updated”‘ in WordPress Twenty Twelve theme


In December, we explained how to correct an SEO issue in WordPress’ Twenty Eleven theme that still lingers in their newly released default theme, Twenty Twelve. Google’s Structured Data Testing Tool reports the error ‘Warning: Missing required field “updated”‘ with the Twenty Twelve WordPress theme just as it did with their former default theme due to a missing “updated” microformat. The information contained in these microformats is used by Google to include relevant blog post data in their Rich Snippet search results and is important for search engine optimization. WordPress’ Twenty Twelve theme does not properly identify this data, but we’ll explain here how to fix that.

Warning: Missing required field "updated" with Twenty Twelve WordPress theme

Prior to making any changes to your WordPress code, we recommend that you take a backup of your blog. In /wp-content/themes/twentytwelve/functions.php, find the twentytwelve_entry_meta function:

We’re simply going to add the “updated” CSS class to the time tag contained within the “date” variable, which should appear as:

If you use Twenty Twelve as your parent theme in WordPress, you can copy the entire function to functions.php which can be found in the root directory of your child theme. If the file does not exist, create it with the code below:

Now when you validate your microdata in Google Webmaster Tools, you should no longer see the ‘Warning: Missing required field “updated”‘ message. WordPress is either unaware of this SEO issue or have no intentions of fixing it, so share this post to alert others of the fix if you found it to be helpful.

Lock down your Facebook apps


It’s no surprise that websites now encourage you to register or log in using your Facebook account. As it turns out, convenient authentication for users across millions of websites is A-ok for the webmasters who gladly use the access you granted them to your Facebook account for any number of tasks. In this post, we’ll go over how to lock down your Facebook apps by limiting a website or app’s access to your Facebook account.

When you authorize a website or an app to access your Facebook, whether to register for an account somewhere or for any other reason, that website will more than likely request varying levels of access to your personal information. Developers can use Facebook Connect, now known broadly as Facebook Platform, to obtain your email address, Timeline posts, the skinny on who you’re seeing, even information about your friends. Some of the more reputable apps, however, request only to post to your Timeline on your behalf.

When permitting access to your Facebook by a third party, you might see something similar to this:

Facebook Connect app/website registration plugin
Facebook Connect requesting access to your Facebook profile.

If you’d prefer to keep the friends you have and not have your Timeline spammed, this would be an ideal opportunity to limit the app’s access to your profile. If the developer insists that you allow them to post on your behalf, simply click the drop-down and select “Only Me”. This will prevent any undue spam from being disseminated to all of your friends’ News Feeds.

In some cases, the app or website will decline your registration if you do not allow them to share posts with your friends. This can be reverted, along with all the other websites you’ve granted access to your Facebook, through your App Settings. From this panel, you can delete old or otherwise unauthorized apps and limit the access of the ones you wish to keep.

Facebook App Settings panel

Even if you don’t typically encounter Facebook spam, you should check this page every so often to lock down your Facebook apps and keep tabs on who you authorize to access your private information.

Use PHP to update website copyright year


Hungover and half baked from a New Year’s party that you’ll probably come to regret, the last thing you’ll want to do is update the copyright year on your websites to ring in the new year. Why not just have PHP automatically update your copyright year for you?

Use PHP’s date() function to quickly determine the year. This will be particularly useful if you’re comatose on January 1, or perhaps if you awaken to find that you’ve forgotten your name and what year you’re in. The code below displays as “© 2012 Your Company Name“:

	echo '
	© ' . date('Y') . ' Your Company Name';

Feel free to adjust the syntax of the copyright statement to your liking. But in all seriousness, we hope you and your family enjoy the holidays. Be safe and have a blast. Happy holidays and Happy New Year!

‘Warning: Missing required field “updated”‘ in WordPress Twenty Eleven theme


This tutorial has been updated for WordPress’ new default theme, Twenty Twelve. Reference this tutorial to fix this SEO issue if you’re using the Twenty Twelve theme.

If Google’s Structured Data Testing Tool reports the error ‘Warning: Missing required field “updated”‘, your Twenty Eleven WordPress theme is likely missing the “updated” microformat. This information is used by Google to include the publication date of your blog posts in Rich Snippet search results and is important for SEO. We found that WordPress’ Twenty Eleven theme does not properly identify this data, but we have a quick fix.

Warning: Missing required field "updated" with Twenty Eleven WordPress theme

As with all code modifications, we advise that you take a backup prior to editing any files.  In /wp-content/themes/twentyeleven/functions.php, locate the function in the following line:

This function provides an HTML output of meta information relevant to the post. On the next line, find the “time” tag and add an additional CSS class called “updated”. Here is the change we just made on line 581 in context:

If your blog uses Twenty Eleven as its parent theme, copy the above function to functions.php in the root directory of your child theme. If the file does not exist, create it with the code below:

Now when you validate your microdata in Google Webmaster Tools, you should no longer see ‘Warning: Missing required field “updated”‘. Let us know in the comments if this worked for you or if you encountered any issues.



If you’re like me, you’re hesitant to jump onto the Windows 8 bandwagon, but still want to see what Microsoft’s latest desktop operating system has to offer.  I downloaded an evaluation copy of Windows 8 to install on my ESXi 5.0 server, but encountered a boot loop when booting from the OS disk, which cited an HAL_INITIALIZATION_FAILED error.


I’ll spare you all of the technical jargon: it seems the most efficient way of addressing this problem is to upgrade your hypervisor by downloading the latest version of ESXi, in my case ESXi 5.1.0 build 799733 (free), which patches the issue that prompts this error message.

If you’re fortunate enough to be running VMware vCenter, your best bet will be to upgrade using the vSphere Update Manager module. Otherwise, the quickest way to get your Windows 8 virtual machine up and running is to burn the ISO to a CD.  Believe me, optical media lost its luster with me many years ago, but I’d rather not be bothered with creating an ESXi installer flash drive from the CLI in order to upgrade a single server.

Upgrading to ESXi 5.1.0 by booting from the CD was all that was necessary for me to fix the “HAL_INITIALIZATION_FAILED” error, and Windows 8 is now running smoothly for me as a VM.  Let me know in the comments if this also worked for you.