<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Ryan Underdown</title>
	
	<link>http://ryanunderdown.com</link>
	<description>SEO, Scripting and Politics</description>
	<lastBuildDate>Sat, 27 Feb 2010 03:49:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ru-com" /><feedburner:info uri="ru-com" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>ru-com</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>SEO Friendly Split Testing</title>
		<link>http://feedproxy.google.com/~r/ru-com/~3/b92_RumRArE/seo-friendly-split-testing.php</link>
		<comments>http://ryanunderdown.com/seo/seo-friendly-split-testing.php#comments</comments>
		<pubDate>Sat, 27 Feb 2010 03:38:45 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[canonical]]></category>
		<category><![CDATA[split testing]]></category>

		<guid isPermaLink="false">http://ryanunderdown.com/?p=964</guid>
		<description><![CDATA[I've recently been spending most of my time split testing the designs across many of the sites I manage.  The question is always raised - how will this effect my seo?]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been spending most of my time split testing the designs across many of the sites I manage.  The question is always raised &#8211; how will this effect my seo?  Unfortunately website owners aren&#8217;t allowed to serve up  different page versions to search engines than to regular visitors &#8211; without risking the wrath of Google.  (That is unless you&#8217;re one of the big brands)  This technique is commonly referred to as &#8220;cloaking&#8221; and is expressly in <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&#038;answer=66355">violation of Google&#8217;s webmaster guidelines</a>.  </p>
<p>Luckily we have a new tool at our disposal to set things straight with some level of reliability &#8211; the <a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">link canonical</a> tag.  According to Google:</p>
<blockquote><p>If your site has identical or vastly similar content that&#8217;s accessible through multiple URLs, this format provides you with more control over the URL returned in search results. It also helps to make sure that properties such as link popularity are consolidated to your preferred version.</p></blockquote>
<p>Let&#8217;s assume three split test variant pages:</p>
<ul>
<li>index.php</li>
<li>indexb.php</li>
<li>indexc.php</li>
</ul>
<p>To properly point each page to the original you would simply place this tag in the HEAD statement of each page:</p>
<pre class="brush: xml;">&lt;link rel=&quot;canonical&quot; href=&quot;http://www.domain.com/index.php&quot;&gt;</pre>
<p>What about other search engines you say?  Well luckily <a href="http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/">Yahoo!</a> and <a href="http://www.bing.com/community/blogs/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx">Bing</a> announced support for the link canonical tag at the same time as Google.  YMMV with these second-tier search engines &#8211; but at least they have stated their intent to honor it.  </p>
<p>A second level of protection can be added by adding a meta tag to each page to prevent indexation.  I would recommend a setting of NOINDEX, FOLLOW as seen below:</p>
<pre class="brush: xml;">&lt;meta name=&quot;robots&quot; content=&quot;NOINDEX, FOLLOW&quot; &gt;</pre>
<p>Obviously this method is ONLY going to work if you are split testing and not multivariate testing.</p>
<img src="http://ryanunderdown.com/?ak_action=api_record_view&id=964&type=feed" alt="" />
<p><a href="http://feedads.g.doubleclick.net/~a/PgNOsTnL-NnAierKyAYnOj5Fhhw/0/da"><img src="http://feedads.g.doubleclick.net/~a/PgNOsTnL-NnAierKyAYnOj5Fhhw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PgNOsTnL-NnAierKyAYnOj5Fhhw/1/da"><img src="http://feedads.g.doubleclick.net/~a/PgNOsTnL-NnAierKyAYnOj5Fhhw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ru-com/~4/b92_RumRArE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryanunderdown.com/seo/seo-friendly-split-testing.php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ryanunderdown.com/seo/seo-friendly-split-testing.php</feedburner:origLink></item>
		<item>
		<title>Firefox Keyword Research Addon</title>
		<link>http://feedproxy.google.com/~r/ru-com/~3/Notg5Lk43oU/firefox-keyword-research-addon.php</link>
		<comments>http://ryanunderdown.com/seo/firefox-keyword-research-addon.php#comments</comments>
		<pubDate>Mon, 10 Aug 2009 03:17:03 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[keyword research]]></category>
		<category><![CDATA[keywords]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[seobook]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://ryanunderdown.com/?p=908</guid>
		<description><![CDATA[A simple firefox search engine addon that makes it faster to do keyword research.  This script passes your keyword research query to seobook's keyword research tool.]]></description>
			<content:encoded><![CDATA[<p>If you are anything like me you probably use seobook&#8217;s <a href="http://tools.seobook.com/keyword-tools/seobook/">keyword rankings tool</a> enough to have it on speed dial.  Luckily the script used to process results accepts a GET request.  As a result I have made a simple firefox search engine addon to make it easier to get the keyword research you are looking for.</p>
<p>NOTE:  I am not in any way affiliated with seobook or Aaron Wall.  (Aaron if you&#8217;d like me to take this down send me a note &#8211; Ryan)</p>
<p>xml for search engine:</p>
<pre class="brush: xml;">
&lt;OpenSearchDescription&gt;
&lt;ShortName&gt;seobook keyword research&lt;/ShortName&gt;
&lt;Description&gt;seobook keyword research
&lt;/Description&gt;
&lt;Image height=&quot;16&quot; width=&quot;16&quot; type=&quot;image/x-icon&quot;&gt;http://seobook.com/favicon.ico&lt;/Image&gt;
&lt;Url type=&quot;text/html&quot; method=&quot;get&quot; template=&quot;http://tools.seobook.com/keyword-tools/seobook/?Keyword={searchTerms}&quot;/&gt;
&lt;/OpenSearchDescription&gt;</pre>
<p>To install this script just click the down arrow on your search engine bar in firefox and select &#8220;seobook keyword research&#8221;.  Big thanks to Aaron Wall for creating such a useful tool.</p>
<img src="http://ryanunderdown.com/?ak_action=api_record_view&id=908&type=feed" alt="" />
<p><a href="http://feedads.g.doubleclick.net/~a/8rvxflFB-Dku5bN8R9bCx_1OxC8/0/da"><img src="http://feedads.g.doubleclick.net/~a/8rvxflFB-Dku5bN8R9bCx_1OxC8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/8rvxflFB-Dku5bN8R9bCx_1OxC8/1/da"><img src="http://feedads.g.doubleclick.net/~a/8rvxflFB-Dku5bN8R9bCx_1OxC8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ru-com/~4/Notg5Lk43oU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryanunderdown.com/seo/firefox-keyword-research-addon.php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ryanunderdown.com/seo/firefox-keyword-research-addon.php</feedburner:origLink></item>
		<item>
		<title>PHP &amp; MySQL Keyword Rankings Script</title>
		<link>http://feedproxy.google.com/~r/ru-com/~3/j1RnajyzbWo/keyword-rankings-script.php</link>
		<comments>http://ryanunderdown.com/seo/keyword-rankings-script.php#comments</comments>
		<pubDate>Fri, 07 Aug 2009 04:35:10 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[keyword rankings]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scraper]]></category>
		<category><![CDATA[serps]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://ryanunderdown.com/?p=870</guid>
		<description><![CDATA[I've been working on a Google keyword rankings script that scrapes Google search engine results pages and stores the values in a mysql database.  This video shows it in action.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a Google keyword rankings script that scrapes Google search engine results pages and stores the values in a mysql database.  The bulk of the heavy lifting is done via php &#038; cURL.  I used some jquery to allow manual updating of rankings.  Much of the scraper code was lifted from an old <a href="http://blog.5ubliminal.com/">5ubliminal</a> post that I can&#8217;t seem to find anymore.  The following video is a short clip of a portion of the script in action.  You can test out the script <a href="http://seotrackr.com">here</a>.</p>
<p><center><br />
<object width="425" height="344" style="margin:10px 0 10px 0"><param name="movie" value="http://www.youtube.com/v/oRwpCoRGKt8&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/oRwpCoRGKt8&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></center></p>
<div style="margin-top:20px;margin-bottom:20px;border:1px solid #c0c0c0;vertical-align:bottom;text-align:center;">
<h3 style="padding-top:20px">download</h3>
<p><a href="http://ryanunderdown.com/rank/download/rank.zip">rank.zip</a></div>
<h3><strong>Files</strong></h3>
<ul>
<li><strong>connect.php</strong> &#8211; stores credentials for mysql connection</li>
<li><strong>add-domains.php</strong> &#8211; allows you to add a domain into the database.  This domain is then presented as an option on the index page.</li>
<li><strong>add-keywords.php</strong> &#8211; checks a domain (already inserted via add-domains.php) against a keyword.  If a match is found it inserts the data into the database.</li>
<li><strong>index.php</strong> &#8211; displays all of your domains</li>
<li><strong>final.php</strong> &#8211; the actual keyword rankings page.  Allows you to update rankings and see each domain&#8217;s keyword rankings on one page.</li>
<li><strong>style.css</strong> &#8211; some css styling</li>
<li><strong>postjax2.php</strong> &#8211; processes serp results and stores values in the db</li>
<li><strong>keyword_rankings.sql</strong> &#8211; database scheme  &#8211; load this query via phpmyadmin to setup your mysql db</li>
<li><strong>header.php</strong> &#8211; some navigation</li>
<li><strong>ajaxproxy.php</strong> &#8211; some cross domain proxy I found to allow you to get rankings from multiple ip addresses</li>
</ul>
<p>Google doesn&#8217;t particularly like it&#8217;s serps scraped &#8211; sometimes they will return garbage data if they suspect you are doing it.  To get around this, we must bounce our requests off of multiple IP addresses.  If you have a few cheap hosting accounts lying around, upload the <em>postajax.php</em> script to a folder accessible from the webserver.  Insert your urls where these files can be found into the following section of code:</p>
<pre class="brush: jscript;">
   var csurla = 'http://YOUR_URL_HERE/postjax2.php';
   var csurlb = 'http://YOUR_URL_HERE/postjax2.php';
   function cointoss(wot){
         var d= new Date().getSeconds();
         wot=(wot)? wot: [csurla, csurlb];
         d+= Math.round(Math.random()*10);
         return wot[d%2];
         }</pre>
<p>The above example randomly chooses one of two urls to post the data to.  This code could easily be changed to accommodate as many urls as you have access to.  The next segment of script gathers the data from each table cell in a row of data.  We then serialize the data and post it to to our ajax proxy which gets around the pesky cross domain ajax restriction.  the $.Ajax command that is built in to jQuery then waits for the php proxy script to respond and then inserts the resulting data into the row we just clicked:</p>
<pre class="brush: jscript;">$(&quot;.update&quot;).click(function() {
       /* extract all the info out of the table cells */
       var selectR = $(this);
       var urlsearch = $(&quot;.urlse a&quot;).html();
       var se = $(selectR).find(&quot;td.se&quot;).html();
       var wt = $(selectR).find(&quot;td.wt&quot;).html();
       var str = $(selectR).find(&quot;td.keywords a&quot;).html();
       var ranking = $(selectR).find(&quot;td.rankingspan&quot;).html();
       var orank = $(selectR).find(&quot;td.orank&quot;).html();
       var delta = $(selectR).find(&quot;td.hclass div&quot;).html();
       var clicks = $('#tabler').find(&quot;td.clickstotal&quot;).html();
       var wttotal = $('#tabler').find(&quot;td.wttotal&quot;).html();
       var keysearch = str.replace('/%20', '+');
       var csurl = cointoss();
       var dataString = 'csurl=' + csurl + '&amp;clicks=' + clicks + '&amp;wttotal=' + wttotal + '&amp;domain=' + urlsearch + '&amp;keyword=' + keysearch + '&amp;wt=' + wt + '&amp;se=' + se + '&amp;rank=' + ranking + '&amp;orank=' + orank + '&amp;delta=' + delta;
       $(this).html(&quot;&lt;td colspan='9' align='center'&gt;&lt;img src='http://PATH_TO/loading.gif'&gt;&lt;/td&gt;&quot;);

          $.ajax({
          type: &quot;POST&quot;,
          url: &quot;http://PATH_TO/ajaxproxy.php&quot;,
          data: dataString,
          cache: false,
          success: function(data){
          $(selectR).html(data);
          var totalr = 0;
          var tempint = 0;
          $(&quot;td.clicks&quot;).each(function(){
          if($(this).text().length &gt; 0){
           var tempint = parseFloat($(this).text());
           totalr += tempint;
           }})
          $(&quot;#clickstotal&quot;).html(totalr);

       $(&quot;td.wt&quot;).each(function(){
       if($(this).text().length &gt; 0){
           var tempwt = parseFloat($(this).text()); //convert to number
           totalwt += tempwt;
           totalwt = totalwt.toFixed(2);
           }})
          }
          });
      });</pre>
<img src="http://ryanunderdown.com/?ak_action=api_record_view&id=870&type=feed" alt="" />
<p><a href="http://feedads.g.doubleclick.net/~a/nbep1XjVFfQC0JGf5gqX2aaY_JY/0/da"><img src="http://feedads.g.doubleclick.net/~a/nbep1XjVFfQC0JGf5gqX2aaY_JY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nbep1XjVFfQC0JGf5gqX2aaY_JY/1/da"><img src="http://feedads.g.doubleclick.net/~a/nbep1XjVFfQC0JGf5gqX2aaY_JY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ru-com/~4/j1RnajyzbWo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryanunderdown.com/seo/keyword-rankings-script.php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ryanunderdown.com/seo/keyword-rankings-script.php</feedburner:origLink></item>
		<item>
		<title>Only An Idiot Would Take Up Nate Silver’s Bet</title>
		<link>http://feedproxy.google.com/~r/ru-com/~3/_NCxuHatypw/only-an-idiot-would-take-up-nate-silvers-bet.php</link>
		<comments>http://ryanunderdown.com/politics/only-an-idiot-would-take-up-nate-silvers-bet.php#comments</comments>
		<pubDate>Sun, 19 Jul 2009 17:20:29 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[climate change]]></category>
		<category><![CDATA[global warming]]></category>
		<category><![CDATA[nate silver]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://ryanunderdown.com/?p=777</guid>
		<description><![CDATA[Nate Silver issues a completely pointless challenge to global warming skeptics that only a fool would take him up on.]]></description>
			<content:encoded><![CDATA[<p>Yesterday left leaning blogger Nate Silver <a rel="nofollow" href="http://www.fivethirtyeight.com/2009/07/challenge-to-climate-change-skeptics.html">issued a bet</a> to <del datetime="2009-07-19T17:07:39+00:00">global warming</del> climate change skeptics in response to John Hinderaker&#8217;s post about the <a href="http://www.powerlineblog.com/archives/2009/07/024075.php">unseasonably cool summer</a> much of the country is experiencing.  Silver states:</p>
<blockquote><p>Therefore, because I&#8217;d like to see more accountability on all sides of this debate and because I&#8217;m tired of people who don&#8217;t understand statistics and because I&#8217;d like to make some money, I issue the following challenge. </p></blockquote>
<p>Hello? Illegal gambling?  Silver is undaunted:</p>
<blockquote><p>For each day that the high temperature in your hometown is at least 1 degree Fahrenheit above average, as listed by Weather Underground, you owe me $25. For each day that it is at least 1 degree Fahrenheit below average, I owe you $25.</p></blockquote>
<p>So on one hand Silver is upset because climate skeptics (according to him) don&#8217;t understand statistics and the concept of anecdotal evidence &#8211; and then proceeds to make a bet over short term temperatures &#8211; the exact anecdotal evidence he is railing about.  Regardless of the outcome you can be sure of one thing: This bet will not dissuade true believers, who will brush it off as anecdotal evidence if they lose and claim an urgent need to act if they win.  You can not bet against a group of people who move the goalposts (global warming->climate change) when data doesn&#8217;t conform to their belief system.  As a result you would have to be an idiot to bet Nate Silver.</p>
<p>UPDATE &#8211;  Its worth mentioning that the average temperature over the date range Silver provided (June 21-July 18) is <a href="http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=KMNMINNE17&#038;graphspan=custom&#038;month=7&#038;day=21&#038;year=2009&#038;monthend=7&#038;dayend=18&#038;yearend=2009">70.5 &deg; F</a> while historically it is 71.96 &deg; F according to <a href="http://www.weather.com/outlook/events/weddings/wxclimatology/daily/USMN0503?climoMonth=7">data from weather.com</a>. </p>
<img src="http://ryanunderdown.com/?ak_action=api_record_view&id=777&type=feed" alt="" />
<p><a href="http://feedads.g.doubleclick.net/~a/Shpgyl8b7mnYdfzXbJxFsOsjrMc/0/da"><img src="http://feedads.g.doubleclick.net/~a/Shpgyl8b7mnYdfzXbJxFsOsjrMc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Shpgyl8b7mnYdfzXbJxFsOsjrMc/1/da"><img src="http://feedads.g.doubleclick.net/~a/Shpgyl8b7mnYdfzXbJxFsOsjrMc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ru-com/~4/_NCxuHatypw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryanunderdown.com/politics/only-an-idiot-would-take-up-nate-silvers-bet.php/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://ryanunderdown.com/politics/only-an-idiot-would-take-up-nate-silvers-bet.php</feedburner:origLink></item>
		<item>
		<title>Wordpress SEO Guide (ver 2.8.1)</title>
		<link>http://feedproxy.google.com/~r/ru-com/~3/tDfxXFoL3IQ/wordpress-seo-guide.php</link>
		<comments>http://ryanunderdown.com/seo/wordpress-seo-guide.php#comments</comments>
		<pubDate>Mon, 13 Jul 2009 08:31:07 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[link building]]></category>
		<category><![CDATA[noindex]]></category>
		<category><![CDATA[pagerank]]></category>
		<category><![CDATA[permalinks]]></category>
		<category><![CDATA[robots.txt]]></category>

		<guid isPermaLink="false">http://ryanunderdown.com/?p=608</guid>
		<description><![CDATA[I recently revisited this blog to make some SEO improvements. Wordpress does a great job of building internal links and with a few tweaks you can keep more link juice.  ]]></description>
			<content:encoded><![CDATA[<p>I recently revisited this blog to make some SEO improvements.  I&#8217;ve made a few structural changes to improve my site&#8217;s indexing that I&#8217;m happy to share.  Wordpress does a great job of building internal links and with a few tweaks you can squeeze those last precious drops of link juice out.  While reading this please keep in mind that you probably shouldn&#8217;t make any of these changes to a live site, but if you do,  disable any sitemap generation plugins you might have.  If you ping Google while making iterative changes to your permalink structure you are bound to end up having Google send visitors to non-existent pages.</p>
<ul>
<li>
<h4>SEO-Friendly URLs</h4>
<p>  Many Wordpress blogs use date based permalinks (e.g. /2009/07/11/blog-title/), mainly because it&#8217;s the most seo-friendly option of the defaults available.  However, using categories adds more relevant keywords to each url and removes a duplicate navigation entry point.  As a result, I use the <em>category/post title</em> format.  To set up these slightly more seo-friendly urls you must login to the admin screen, navigate to settings->permalinks and enter in the following custom values:</p>
<pre>/%category%/%postname%/</pre>
</li>
<li>
<h4>301 Redirect Your Old URLs</h4>
<p>On an existing blog like this one, you don&#8217;t want to lose any back links pointing to your blog posts.  In order to do this you will need to create 301 redirects from the old URLs to the new ones.  A 301 redirect is a server code that gets sent to your browser informing it (transparently) that the content you were seeking is now <em>permanently moved</em> to a new location.  The browser then automatically retrieves the new url without any input from the user.  Googlebot also follows these server codes and will credit the new url specified with the back links pointed to the previous url. Setting up these redirects is typically done (on Apache servers) via a module called mod rewrite.  Apache uses a special file named .htaccess to manage redirects.  You can specify each redirect by hand in your .htaccess file (which could take forever on a large blog), programmatically via regex,  or you can just download Dean Lee&#8217;s <a href="http://www.deanlee.cn/wordpress/permalinks-migration-plugin/">Permalinks Migration Plugin</a> which does the trick without requiring you to learn mod rewrite syntax.  Just install the plugin in your admin interface, specify both your old and new permalink structures and you are in the clear.  It is always smart to make sure a 301 server code is being sent with the location of the new URL.  If you use firefox, you can do this easily using the <a href="https://addons.mozilla.org/en-US/firefox/addon/3829">live http headers addon</a>.  When done successfully your server will send a code looking like this:</p>
<pre>HTTP/1.x 301 Moved Permanently
Date: Mon, 13 Jul 2009 17:22:49 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8b mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/4.4.7
X-Pingback: http://ryanunderdown.com/xmlrpc.php
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Last-Modified: Mon, 13 Jul 2009 17:22:49 GMT
Location: http://ryanunderdown.com/digg/
Content-Length: 0
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8</pre>
</li>
<li>
<h4>Remove &#8220;Category&#8221; Slug from URLs</h4>
<p>I feel the &#8220;category&#8221; slug that Wordpress adds to category page urls is one of the ugliest elements of the wordpress setup.  It makes your urls inconsistent from an information retrieval standpoint.  If your posts are structured &#8220;/category/post-title/&#8221; it makes sense for your category listings to be in the &#8220;/category/&#8221; folder.   Unfortunately fixing it is a little difficult.  After scouring the Wordpress forums the best solution I&#8217;ve come up with<del datetime="2009-12-13T20:28:03+00:00"> goes against the &#8220;plugin&#8221; philosophy of Wordpress &#8211; so use at your own risk</del> follows.  You will need to download and install the <a href="http://fortes.com/projects/wordpress/top-level-cats/">Top Level Categories Plugin</a>. This plugin takes care of removing the category slug on category pages.  Next you must redirect your existing category page urls to the new slug-free ones by editing your .htaccess in your blog&#8217;s root directory.  Mine looks something like this:</p>
<pre>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RedirectMatch 301 ^/category/(.+)$ http://ryanunderdown.com/$1
</pre>
<p>Note: if your category base uses a something other than category (ie: topics) you will need to adjust the above settings to match.  Now the changes above work great except for on paginated categories (e.g. http://ryanunderdown.com/seo/page/2/). To <a href="http://wordpress.org/support/topic/98005#post-550060">work around</a> this issue you need to update your permalink structure yet again.  Go to &#8220;Settings->Permalinks&#8221; and set your custom URL structure to the following:</p>
<pre>/%category%/%postname%.php</pre>
<p>(while researching this post I was tempted to copy seoegghead&#8217;s use of the .seo extension for pages: http://www.seoegghead.com/software/wordpress-seo-pager.seo &#8211; interesting idea)
   </li>
<li>
<h4>Install Joost de Valk&#8217;s  <a href="http://yoast.com/wordpress/robots-meta/">Robots Meta Plugin</a></h4>
<p>This is one of the more useful SEO plugins out there.  It allows you to lock down the way your site gets spidered by adding noindex meta tags to dynamically generated pages like &#8220;/wp-login&#8221;.  These are the settings I like:</p>
<ul>
<li>noindex comments rss</li>
<li>noindex,follow search result pages</li>
<li>noindex admin pages (login &amp; register)</li>
<li>subpages of the homepage</li>
<li>disable author archives</li>
<li>noindex your tags archives</li>
<li>add noarchive, noodp and noydir tags</li>
<li>disable author archives</li>
<li>disable date based archives</li>
<li>redirect search results when referrer is external</li>
</ul>
<li>
<h4>Create A Sitemap</h4>
<p>Download the <a href="http://wordpress.org/extend/plugins/google-sitemap-generator/">Google Sitemap Generator</a> plugin.  This tool gives you options as to what to specifically show Google.  Make sure you uncheck &#8220;include archives&#8221;.  We want Googlebot to spider our site through our categories.  You want to avoid links to the archives in general if you can help it.
</li>
<li>
<h4>Fix Your Titles</h4>
<p> Wordpress likes to put your blog name first in post titles by default. To fix this mix up install the <a href="http://wordpress.org/extend/plugins/all-in-one-seo-pack/">All-In-One SEO Pack</a> plugin This little plugin switches up the order and gets rid of the annoying little &raquo; symbols wordpress inserts.  In addition it gives you a few &#8220;per post&#8221; options &#8211; overall a decent tool.</li>
<li>
<h4>Deep Link Your Existing Content</h4>
<p>  If you&#8217;ve ever read the online edition of the New York Times you certainly have noticed how they link back to their own articles about newsworthy items, events, and people.  There&#8217;s good reason for this: links (and especially anchor text) are the currency of rankings.   If you are linking to an article on your blog about <a href="http://ryanunderdown.com/seo/">seo</a>, make sure to use the anchor text &#8220;seo&#8221; not vague useless keywords like &#8220;click here&#8221;.  I know of at least <span style="text-decoration: line-through">two</span> three plugins that will automatically link up keywords to existing content: <a href="http://www.prelovac.com/vladimir/wordpress-plugins/seo-smart-links">SEO Smart Links</a>, <a href="http://kaloyan.info/blog/proekti/wordpress-proekti/wp-batch-links/">Batch Links</a> and (probably the best in the group) Gab Goldenberg&#8217;s <a href="http://seoroi.com/specialty-services/new-seo-plugin-for-wordpress-internal-link-building/">Internal Link Building</a>.  These plugins basically require you to create a list of keyword and target url pairs.  When a keyword is found in a subsequent blog post it is automagically linked to the appropriate target url (keyword landing page).</li>
<li>
<h4>Disable Comment Links</h4>
<p> Just as inbound links increase your PageRank, outbound links drain it away &#8211; even if nofollowed.  With the changes to the nofollow tag that have rendered it beyond useless, comment link droppers can put a hurt on your site&#8217;s link juice in a hurry.  Hobo has a nice <a href="http://www.hobo-web.co.uk/seo-blog/index.php/hobo-custom-link-love-for-wordpress/" title="Hobo Custom Link Love">plugin that disables comment links</a> for new posters.</li>
</ul>
<img src="http://ryanunderdown.com/?ak_action=api_record_view&id=608&type=feed" alt="" />
<p><a href="http://feedads.g.doubleclick.net/~a/0u9_kt8tlAj-wG9nOgEJ3Y_j0Cc/0/da"><img src="http://feedads.g.doubleclick.net/~a/0u9_kt8tlAj-wG9nOgEJ3Y_j0Cc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0u9_kt8tlAj-wG9nOgEJ3Y_j0Cc/1/da"><img src="http://feedads.g.doubleclick.net/~a/0u9_kt8tlAj-wG9nOgEJ3Y_j0Cc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ru-com/~4/tDfxXFoL3IQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryanunderdown.com/seo/wordpress-seo-guide.php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://ryanunderdown.com/seo/wordpress-seo-guide.php</feedburner:origLink></item>
	</channel>
</rss>
