Before launching a new WordPress site it’s your responsibility as a developer to ensure that the URL structure currently indexed by search engines is preserved for SEO value. 301 redirects will tell search engines that a page has been moved permanently. I use this handy function by Scott Nelle which been pulled and modified slightly from his Simple 301 Redirects plugin. It allows you to add 301 redirects to WordPress using PHP:
/**
* 301 Redirects for Website Launch
*/
function base_redirect_urls()
{
$current_address = base_get_address();
$userrequest = str_ireplace(get_option('home'),'', $current_address);
$userrequest = rtrim($userrequest,'/');
$redirects = array(
'/news/index.html' => 'https://www.newwebsite.com/news/',
);
foreach ($redirects as $storedrequest => $destination) {
// compare user request to each 301 stored in the db
if(urldecode($userrequest) == rtrim($storedrequest,'/')) {
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: ' . $destination);
exit();
} else { unset($redirects); }
}
}
function base_get_address()
{
$protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
return $protocol.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}
add_action('init','base_redirect_urls');
Another method involves using the .htaccess file to setup redirects. I’ve experiences issues with this technique and query string, so I tend to use this PHP method instead. What methods do you use to preserve URL’s after a migration? Are they better than mine?