SEOClerks

Website Redesign and Restructuring - Redirecting 301 - Tutorial Tutorial



Write the reason you're deleting this FAQ

Website Redesign and Restructuring - Redirecting 301 - Tutorial

Once in a while, I get clients with old website designs and structures that want to update everything to the modern days.

They usually have very old websites that are still successful, but normally there are losing clients because they have an old designed website with limited features and technologies. They may have homepages URLs that look like this: www.example.com/index.html - to ensure all the authority is being transferred you need to 301 that URL to a normal looking homepage URL: www.example.com. Same for any other ugly looking URLs.

Website Redesign and Restructuring - Redirecting 301 - Tutorial
As an SEO my job is to ensure the old structure of URLs is correctly redirected to the new URLs. Most choose to maintain their old domain so only the URL structure will need to be changed but some will also change to a new domain name and I have to make sure I transfer as much authority as possible from the old domain to the new one.

Most old school SEOs are doing a very bad job when it comes to redirecting, they usually just 301 all the old URLs to the homepage of the new website.

That's wrong on some many levels! - Why? Because Google tells us so, that's why!
John Mueller says it here in this video - The 301 redirect from all pages to the homepage, that we would be something that will see as soft 404.

Here is how I'm doing a site-wide 301 redirect of all URLs when I have a redesign and restructure project:

  • I set the range on Google Analytics for 1 or 2 year period.
  • I export all the pages that got at least 1 organic visit in this period
  • I fire up a notepad writing manually the redirects from the old location to the new location: RewriteRule ^old/url$ /new/url [R=301,L]
  • I also look at any pages that may have gotten backlinks but don't necessarily get organic traffic, those also need to be added in the redirect list
  • I hand the list over to the programmers for actual and permanent implementation

Comments

Please login or sign up to leave a comment

Join
Lynne
Thanks Cristian. I never knew that was how to do a 301 redirect. I had a plugin on my website for 301 and 302 redirects but I was a little hesitant to use it for much.

I would much rather use a freelancer to do this sort of thing for me Website Redesign and Restructuring - Redirecting 301 - Tutorial



Are you sure you want to delete this post?

Cristian
the 301 redirect plugin for Wordpress is great! In the article above I was referring more about huge eCommerce websites or generally big websites on other frameworks.
On WordPress, I do the redirects myself with the help of that plugin.



Are you sure you want to delete this post?

Order Now
Process Time: 0.48066210746765

Possible Duplicate queries found!
MatchCountSQLScript
SELECT * FROM `questions` as q JOIN categories_faq as c ON q.catid=c.CATID WHERE (q.status=1 OR (q.status=2 AND userid='') ) AND q.quesid='19939'1SELECT q.*, c.seo as CatSEO, c.name as CatName, c.parentid FROM `questions` as q JOIN categories_faq as c ON q.catid=c.CATID WHERE (q.status=1 OR (q.status=2 AND userid='') ) AND q.quesid='19939'

/opt/clerks-staging/docroot/viewfaq.php 496 () ()

SELECT * FROM seoclerks.members WHERE USERID='134'1SELECT * FROM seoclerks.members WHERE USERID='134'

/opt/clerks-staging/docroot/include/functions/includes/member.php 445 GetAllUserDetails() ()

SELECT * FROM seoclerks.members WHERE USERID=1341SELECT googleplus_profile FROM seoclerks.members WHERE USERID=134

/opt/clerks-staging/docroot/include/functions/main.php 16914 GetGooglePlusProfileFromId() ()

SELECT * FROM ratings_faq as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=19939 LIMIT 51SELECT m.username FROM ratings_faq as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=19939 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM answers a, seoclerks.members b WHERE a.quesid='19939' AND a.userid=b.USERID and b.status='1' AND a.status=1 ORDER BY a.combined_votes DESC, a.date_answered asc1SELECT a.answer, a.USERID, a.upvotes, a.downvotes, a.ansid, a.parentid, a.combined_votes, a.date_answered, b.username, b.userlevel, b.profilepicture FROM answers a, seoclerks.members b WHERE a.quesid='19939' AND a.userid=b.USERID and b.status='1' AND a.status=1 ORDER BY a.combined_votes DESC, a.date_answered asc

/opt/clerks-staging/docroot/viewfaq.php 1245 () ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=108906 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=108906 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=108912 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=108912 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

UPDATE questions SET total_views = total_views + 1 WHERE quesid='19939'1UPDATE questions SET total_views = total_views + 1 WHERE quesid='19939'

/opt/clerks-staging/docroot/include/functions/main.php 1765 update_Faqviewcount() ()

SELECT * FROM questions WHERE quesid!='19939' AND status='1' AND (question like '%Website Redesign Restructuring - Redirecting 301 - Tutorial %' OR question like '%Website%' OR question like '%Redesign%' OR question like '%Restructuring%' OR question like '%Redirecting%' OR question like '%Tutorial%') -- ORDER BY RAND() LIMIT 151SELECT quesid, question, seo, userid FROM questions WHERE quesid!='19939' AND status='1' AND (question like '%Website Redesign Restructuring - Redirecting 301 - Tutorial %' OR question like '%Website%' OR question like '%Redesign%' OR question like '%Restructuring%' OR question like '%Redirecting%' OR question like '%Tutorial%') -- ORDER BY RAND() LIMIT 15

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() ()

SELECT * FROM seoclerks.members WHERE USERID='9' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='9' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='3160' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='3160' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='2637' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='2637' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='147' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='147' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM members_ledger WHERE script='/opt/clerks-staging/docroot/viewfaq.php' AND querystring LIKE '%id=19939%' AND added>=UNIX_TIMESTAMP(NOW())-1200 GROUP BY USERID 1SELECT USERID, username FROM members_ledger WHERE script='/opt/clerks-staging/docroot/viewfaq.php' AND querystring LIKE '%id=19939%' AND added>=UNIX_TIMESTAMP(NOW())-1200 GROUP BY USERID

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() ()

SELECT * FROM categories1SELECT * FROM categories

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() parseRedundantQueriesCache()

select * from categories_software order by name asc1select * from categories_software order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_GetSoftwareCategories()

select * from categories_wanttobuy order by name asc1select * from categories_wanttobuy order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_wantcategories()

select * from categories_wanttotrade order by name asc1select * from categories_wanttotrade order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_tradecategories()

SELECT * FROM seoclerks.members WHERE USERID='306632.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='306632.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='134.png'1SELECT profilepicture FROM seoclerks.members WHERE USERID='134.png'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

select * from categories_faq order by name asc1select * from categories_faq order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_GetFaqCategories()

Invalid SQL

count(*)sql1error_msg

Expensive SQL

Tuning the following SQL could reduce the server load substantially
LoadCountSQLMaxMin

Suspicious SQL

The following SQL have high average execution times
Avg TimeCountSQLMaxMin