Browsing articles tagged with " 301/302 redirects"
Dec 14, 2010

4 Important Reasons for SEO 301 Redirection

When it comes to making URL structural changes to your website, it is very important to ensure you 301 redirect your old URLs to the new URLs. Common cases of doing this are migrating between pages on a site or migrating between sites.

Doing 301 redirects for migrations has SEO and usability impact and if not followed correctly, may cost your site valuable organic traffic and rankings.

4 reasons why you should and must 301 redirect your old URLs:

  1. Search engines (such as Google) most likely have crawled and indexed your site on the SERPs. If a user then queries and finds your site organically on the SERPs, it would be poor user experience if the link found lead to a 404 page.
  2. Search engines may recrawl your site via the old URLs and if stumbles upon a 404 page, will most likely drop you out of the SERPs if they can’t see the association to the new URL. This is also because of poor user experience as search engines place high importance on ensuring users find what they’re looking for.
  3. You will lose link juice from external sites as these trust & authority juices aren’t flowed from the old URL to the new URL. Loss of link juice means your site will lose authority & trust: 2 important factors in SEO.
  4. If you did not update your internal links to point to the new URLs, you will have a lot of broken links too which will negatively affect your internal PageRank flow.

You’d be surprised but I have seen websites lose 50%+ organic traffic due to this oversight. Imagine if you ran a multi-million dollar e-commerce site. What are the implications of not doing this?
Continue reading »

Mar 15, 2009

Google Analytics: Does 301/302 Redirect Preserve Referrer Information?

In case you’re wondering whether 301 redirects preserve the referrer information or not and how this may affect Google Analytic’s referrer information, I’ll show you a simple example.

So pretty much what I did was I did a Google search for clothes and found some ads on the right hand side. I used firebug to extract the destination URL as I didn’t want to inflate their costs because I’m just doing an example. What I look for are obvious tracking URLs that track and monitor search engine marketing (SEM) campaigns such as DART (Double Click).

You can also figure this one out by seeing the domain of the URL. If this is different to the display URL, most likely this is a tracking URL because Google Adwords has enforced the policy that the destination and display URL must be the same (it’s ok to use tracking URLs though as long as you land on the same domain as the display URL).

clothes-adwords

Continue reading »

Feb 22, 2009

WordPress: Getting unwanted 302 redirects locally

If you’re trying to do some testing on your existing WordPress website locally (using something like XAMPP) using the same files and database but find that it keeps 302 redirecting to your website rather than running it locally, you will have to configure your WordPress options to set your home and site URL to your local address.

Since you can’t even access your WordPress admin interface because of the redirects, you’ll have to configure this on the backend, your database.

Run your trustworthy phpMyAdmin or your favourite SQL client, connect to your local database and browse to your WordPress database (this is usually prefixed with wp_). Then browse to a table called wp_options or wp_kicpl0_options and look for a table field called siteurl.

The current value of this field should be your website. Edit this field value to your local address (i.e. http://localhost/wordpress). Remember NOT to use a / at the end. Save this.

The next field to edit is called home. If you can’t find this field on your current view in phpMyAdmin, it’s probably on the next page of fields. Edit this field value to the same value you used in siteurl. Save this.

Once you’ve edited both fields, just simply type in your local address again in your browser and you should be running your website locally instead of being redirected to your online website.

Oct 28, 2008

Limitations of Client-Side Javascript Redirect – Blogger to WordPress

You may have read my previous entry on performing a 301 redirect from Blogger to WordPress, where I wrote a script that will capture all traffic to your old Blogger site and redirect it to your new WordPress site. Ideally you’d want to do the 301 redirects from the web server, but unfortunately Blogger doesn’t allow you to do that and thus, you’re left with the client-side solution: Javascript.

First of all, let me clarify briefly on my previous post and inform you what the core strengths of my script are.

  • Client-side redirect will not work without Javascript. Pretty obvious huh? What that means is that search engine crawlers aren’t able to follow the redirect. Nasty limitation in a simplistic sense.
  • Strengths of my script are:
    1. It works.
    2. You need a client-side solution if you’re on Blogger. No other way.
    3. It captures and redirects all traffic from your old site to your new site.

That being said, let me now expand on these two major points: the limitations of search engine crawlers and why is capturing traffic important.

Continue reading »

Jul 26, 2008

How to 301 redirect from Blogger to WordPress

As promised in my previous post (301 Meta Refresh Redirects: How Google and Yahoo Sees It), I will show you a script I wrote that will handle 301 redirects from Blogger to WordPress using the meta refresh tag and javascript.

I have tested it on my old blogger (http://dannynsl.blogspot.com) and it seems to have worked fine so far.

There are a few steps you will first need to do.

  1. Install WordPress on your domain. There should be installation tutorials on the website. I haven’t had time yet to do my own installation tutorial.
  2. Import your Blogger posts into WordPress. In your dashboard, go to Manage and then Import.
    Wordpress - Import Blogger
  3. Change your permalink structure. In your dashboard, go to Settings and then Permalinks. The Day and name or Month and name settings should work. However, for my script I think Month and name should be safer.
    Wordpress - Permalinks Settings
  4. Use my javascript code just after the start of the <head> tag in your Blogger layout template. Note: Please make sure you do a backup before making changes. The variables that you need to change are old_root_domain and new_root_domain. This script handles redirection of individual posts, monthly archives and yearly archives. Anything else it will redirect to your homepage.

    When assigning values to old_root_domain and new_root_domain, DO NOT use ‘/’ at the end.

<script type='text/javascript'>
/*
 * Written by Danny Ng (http://www.dannytalk.com/2008/07/26/how-to-301-redirect-from-blogger-to-wordpress/)
 * Free to use and distribute but must keep this comment in place.
 */
var post_regex = /^http:\/\/(www.)?.*\.blogspot\.com\/\d{4}\/\d{2}\//;
var month_archive_regex = /http:\/\/(www.)?.*\.blogspot\.com\/\d{4}_\d{2}_\d{2}_archive.html/;
var year_archive_regex = /updated-min=\d{4}/;
var label_regex = /search\/label\/.+/;
var old_root_domain = 'http://dannynsl.blogspot.com', new_root_domain = 'http://www.dannytalk.com', tag_url = '/tag/', redirect_suffix;

if (post_regex.test(location.href))
	redirect_suffix = (location.href.search(/www/i) == 7) ? location.href.substring(old_root_domain.length+4, location.href.length-5) : location.href.substring(old_root_domain.length, location.href.length-5); // -5 to strip .html
else if (month_archive_regex.test(location.href))
{
	redirect_suffix = (location.href.search(/www/i) == 7) ? location.href.substring(old_root_domain.length+4, location.href.length-16) : location.href.substring(old_root_domain.length, location.href.length-16); // -16 to strip _XX_archive.html
	redirect_suffix = redirect_suffix.replace(/_/g, '/');
}
else if (year_archive_regex.test(location.href))
{
	redirect_suffix = year_archive_regex.exec(location.href).toString();
	redirect_suffix = redirect_suffix.replace(/updated-min=/, '/');
}
else if (label_regex.test(location.href))
{
	redirect_suffix = label_regex.exec(location.href).toString();
	redirect_suffix = tag_url + redirect_suffix.split('/')[2];
}
else
	redirect_suffix = '';

document.write("<meta content='0;URL=" + new_root_domain + redirect_suffix + "' http-equiv='refresh'/>");
</script>

If you want to do a 302 redirect equivalent, just change the number in the meta content from 0 to 1 or 2.

Hope this works for you and please let me know if there are any bug issues.

[edit date=26/07/08]

I just fixed the code to accommodate blog addresses with ‘www’ subdomains. As for redirects for labels, I’ll try to update the code for it tomorrow if I have time.

[/edit]

[edit date=27/07/08]

I’ve added a new regular expression to handle labels and also another variable tag_url that points to your permalink structure for tags or categories.

Wordpress - Category, Tag edit

This setting can be found under Setting, then Permalinks and just scroll right down to the bottom. You will need to edit the variable tag_url to what you’ve sent in the permalinks structure. Make sure you add the ‘/’ at the end of it.

I think by default, WordPress automatically imports posts from Blogger and sets the labels to categories instead of tags. In this case, just set the variable to the category slug name unless you can be bothered to go through all the posts and set them as tags instead.

[/edit]

[edit date=14/02/08]

Just found a bug (thanks to Chris Lee) that the redirection didn’t seem to work in IE7. For some reason I needed to add URL= in the meta content attribute for the redirection to work.

Basically I just changed,

document.write(“<meta content=’0;” + new_root_domain + redirect_suffix + “‘ http-equiv=’refresh’/>”);

to

document.write(“<meta content=’0;URL=” + new_root_domain + redirect_suffix + “‘ http-equiv=’refresh’/>”);

Please let me know if you guys ever come across bugs for this script and I will try my best to fix it as soon as possible :)

Happy Valentines Day everyone!

[/edit]

Pages:12»

Twitter Updates