SitePoint Sponsor

User Tag List

Results 1 to 19 of 19
  1. #1
    SitePoint Addict
    Join Date
    Jun 2006
    Posts
    251
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Transferring content onto different domain - redirect old links?

    Hi Folks,

    I'm due to transfer a load of content from several websites into one, all have different structures and content.

    Once all the content is in there and the site is ready to go, I need to switch the old domains off - how do I redirect old url's picked up in google to the current site, is it possible? and could I just link back to archived content using the ip address?

    Thanks

  2. #2
    SitePoint Member lawstevefthit's Avatar
    Join Date
    May 2012
    Posts
    3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    you can go into the cpanel and set it up to forward possibly to a catch all

  3. #3
    Life is not a malfunction gold trophysilver trophybronze trophy
    TechnoBear's Avatar
    Join Date
    Jun 2011
    Location
    Argyll, Scotland
    Posts
    6,088
    Mentioned
    255 Post(s)
    Tagged
    5 Thread(s)
    Assuming you're on an Apache server, you can set up redirects in the .htaccess file. I'd advise against using a catch-all, except for pages that no longer exist or have no real equivalent on the new system. If somebody follows a link from a search engine, they want to be taken to the page with the information they're looking for, not a generic landing page.

    There are links to tutorials in the stickies for this forum which might help.
    Take plenty of exercise walk round and round the garden
    or
    sign up now for the Isle of Jura 10K or Half Marathon!

  4. #4
    Foozle Reducer ServerStorm's Avatar
    Join Date
    Feb 2005
    Location
    Burlington, Canada
    Posts
    2,699
    Mentioned
    89 Post(s)
    Tagged
    6 Thread(s)
    Hi,

    If running PHP on your server you can do it using this redirect class.

    On the server with your old domains at the very top of the index.php (or whatever file you set as the default index), without outputting any content including spaces do:

    Code PHP:
    $o_Redirect = new Redirect( 'http://www.mydomain.com'); //instantiate the object and set default redirect
    $o_Redirect->setRedirect('www.mynewdomain.com');
    $o_Redirect->go(); //issue the redirect to the new domain.
     
    class Redirect {
        protected $redirect;
        protected $default_redirect;
     
        function __construct($default_redirect = '') {
          $this->default_redirect = $default_redirect;
      }
        public function setRedirect($redirect) {
         $this->redirect = $redirect;
        }
         public function go() {
             $this->redirect();
         }
        protected function redirect($moved_permanently = 0) {
          if($moved_permanently != 0){
            // Permanent redirection
            header("HTTP/1.1 301 Moved Permanently");
          }
        header('Location: '.$this->redirect);
        exit();
      }
        public function getRedirector(array $urls = null){
            $default_urls = array(
                'http://www.google.ca'
                ,'http://ca.yahoo.com/'
                ,'http://www.bing.com/?cc=ca'
            );
            if($urls != null){
                shuffle($urls);
                return $urls[0];
            } else {
                shuffle($default_urls);
                return $default_urls[0];
            }
        }
    }

    Any search engine bots will traverse to this redirect and will take note of the fact that the content is moved. They will then travel to your new site and start index it.

    Also people that have the old links bookmarked will be redirected to the new site.

    For this to work you still need to serve both old and new content and you can not change the DNS for the old site or the redirects will never be reached.

    This technique gives you a lot of control as to exact paths you want to redirect to.

    Hope this helps.

    Regards,
    Steve
    ictus==""

  5. #5
    SitePoint Addict
    Join Date
    Jun 2006
    Posts
    251
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks very much for the replies folks.

    Just trying to understand this, the old sites will be online just the domain switched off.

    For example, a old url in google would be:

    http://www.oldsite.co.uk/index.asp?page=1

    Could I redirect this to the archived site somehow? something like:

    http://11.22.44.55/index.asp?page=1

    Any advice or help much appreciated. Thanks

  6. #6
    Foozle Reducer ServerStorm's Avatar
    Join Date
    Feb 2005
    Location
    Burlington, Canada
    Posts
    2,699
    Mentioned
    89 Post(s)
    Tagged
    6 Thread(s)
    Hi mattastic,

    As soon as the old domain is 'switched off' there will be no way for any of the existing links or routes to that old domain to redirect.

    Say I have your old domain and in my browser I try http://www.oldsite.co.uk/index.asp?page=1 the public DNS being cancelled for the www.oldsite.co.uk will mean that the DNS forwarder routers will soon forget to do this route and I will get a 'Page not found' error, not to be confused with a 404 error as there won't be a site/server that I will route to, so I am out of luck.

    The way this is normally done is that both domain are run for a period say 3 months. Then you set some mechanism for redirecting calls to the old site to the new one. There are a number of suggestions in this thread that you can try .htaccess or the php redirect would work. This process would work like this:

    1. I try http://www.oldsite.co.uk/index.asp?page=1
    2. The public DNS routers point to your server and I connect to it
    3. Upon connection, I am redirected using headers. I also use headers to tell search bots can be told that this is a permanent move. Overtime the google bots and other search bots will mark your old domain as permanently move.
    4. You could use a little javascript to get the referrer and let them know to bookmark the new site as the old one is going away.
    5. After a length of time the search bots will have updated the permanent move and continue indexing your new domain.


    If you simply phase out your old domain then you can not do a redirect.

    Regards,
    Steve
    ictus==""

  7. #7
    SitePoint Addict
    Join Date
    Jun 2006
    Posts
    251
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hi Steve,

    Thanks for that, really appreciate it. After re-reading your great post several times I was thinking along the lines of below....

    Rather than switch them off - If I can change the DNS and get the old domains to point to a section on my new site (hopefully I should be able to do this), www.newsite.co.uk/oldsitesrea. I can get a splash page setup explaining the new site setup and a link to the old site that no longer has the domain for archive purposes.

    All new visitors will then be sent to the new site (hopefully). Regarding the bookmarked and old google search results - as the old links to the old domain will now go to the new site. Is there a way I can redirect the old google links to the archive site? Something like....

    1. User clicks on a search result in google, http://www.oldsite.co.uk/index.asp?page=1,

    2. The DNS directs them to the approriate www.newsite.co.uk/oldsitesrea, could I then somehow store the original old site link, and send them to the appropriate page on the archived site? As the querystring will be the same on the old site (index.asp?page=1), just the domain will of changed.

    What do you think?

    Thanks again for your help :-)

  8. #8
    Foozle Reducer ServerStorm's Avatar
    Join Date
    Feb 2005
    Location
    Burlington, Canada
    Posts
    2,699
    Mentioned
    89 Post(s)
    Tagged
    6 Thread(s)

    Post

    Hi mattastic,

    You are moving in the right direction.

    I would do the following:

    1. Set the Public DNS for your new domain
    2. Keep the DNS for your old domain
    3. As your new site will be (I guess) the same content your old site had, then your old site should no longer reference these pages. In place of your old links, put new .php or .asp pages that redirect the users to an appropriate page on the new site. So lets say that your old site had http://www.oldsite.co.uk/index.asp?page=1 and that content has been moved to http://www.newsite.co.uk/index.asp?page=1 then you would need the http://www.oldsite.co.uk/index.asp?page=1 when a bot or user connects to it, to have redirection code here. I don't know .asp well so I can't help you with a redirect in .asp but this is what would need to go in the http://www.oldsite.co.uk/index.php?page=1:


    PHP Code:
    /* This is index.php on the old site */
    <?
    $o_Redirect 
    = new Redirect();
    switch(
    $_GET['page']){
      case 
    1:
        
    $o_Redirect->setRedirect('http://www.newsite.co.uk/index.asp?page=1');
        
    $moved_permanently 1;
        
    $o_Redirect->go($moved_permanently);  case 2:
      
    $o_Redirect->setRedirect('http://www.newsite.co.uk/index.asp?page=2');
        
    $moved_permanently 1;
        
    $o_Redirect->go($moved_permanently); /*more case statements would go here. Each would match a page on your old site*/ default:  $o_Redirect->setRedirect('http://www.newsite.co.uk/index.asp'); /* By default redirect them to the home page */   $moved_permanently 1;   $o_Redirect->go($moved_permanently);}
    class 
    Redirect {    protected $redirect;    protected $default_redirect;     function __construct($default_redirect '') {      $this->default_redirect $default_redirect;  }    public function setRedirect($redirect) {     $this->redirect $redirect;    }     public function go($moved_permanently 0) {
             
    $this->redirect($moved_permanently);     }    protected function redirect($moved_permanently 0) {      if($moved_permanently != 0){        // Permanent redirection        header("HTTP/1.1 301 Moved Permanently");      }    header('Location: '.$this->redirect);    exit();  }    public function getRedirector(array $urls = null){        $default_urls = array(            'http://www.google.ca'            ,'http://ca.yahoo.com/'            ,'http://www.bing.com/?cc=ca'        );        if($urls != null){            shuffle($urls);            return $urls[0];        } else {            shuffle($default_urls);            return $default_urls[0];        }    }}?>


    • Have Javascript on the new site that detects the referrer and let's the user the user know to update their bookmarks as the link they tried has been permanently moved.
    • Wait three to four months with this setup, then cancel the old domain and remove the DNS for it.


    Hope this helps,
    Steve
    ictus==""

  9. #9
    Certified Ethical Hacker silver trophybronze trophy dklynn's Avatar
    Join Date
    Feb 2002
    Location
    Auckland
    Posts
    14,644
    Mentioned
    19 Post(s)
    Tagged
    3 Thread(s)
    Matt,

    SS is giving you a PHP way to conquer the problem but it requires loading a PHP script and running it. It's like using a "poor man's RewriteMap", a redirection facility when there are a large number of redirections required which cannot use Regular Expressions effectively.

    IMHO, that's a last resort - IF you maintain the page name (or something regex can use) in the new domain. If you're smart, mod_rewrite can handle it for you quickly and efficiently.

    As a final note, SPOT ON about not being able to redirect once a domain dies. Keep the domain going long enough to provide PERMANENT redirects to all visitors and SE's!

    Regards,

    DK
    David K. Lynn - Data Koncepts is a long-time WebHostingBuzz (US/UK)
    Client and (unpaid) WHB Ambassador
    mod_rewrite Tutorial Article (setup, config, test & write
    mod_rewrite regex w/sample code) and Code Generator

  10. #10
    Foozle Reducer ServerStorm's Avatar
    Join Date
    Feb 2005
    Location
    Burlington, Canada
    Posts
    2,699
    Mentioned
    89 Post(s)
    Tagged
    6 Thread(s)
    Quote Originally Posted by dklynn View Post
    Matt,

    SS is giving you a PHP way to conquer the problem but it requires loading a PHP script and running it. It's like using a "poor man's RewriteMap", a redirection facility when there are a large number of redirections required which cannot use Regular Expressions effectively.

    IMHO, that's a last resort - IF you maintain the page name (or something regex can use) in the new domain. If you're smart, mod_rewrite can handle it for you quickly and efficiently.

    As a final note, SPOT ON about not being able to redirect once a domain dies. Keep the domain going long enough to provide PERMANENT redirects to all visitors and SE's!

    Regards,

    DK
    Good suggestion Dk,

    I did not know how to do what you suggest, thus the php way as it will work, but I can understand how this may not be the best way as it is limited as/per regex matching.

    Would you be able to provde the OP an example specific to his http://www.oldsite.co.uk/index.asp?page=1 to http://www.newsite.co.uk/index.asp?page=1, using a rewrite map?

    Regards,
    Steve
    ictus==""

  11. #11
    SitePoint Addict
    Join Date
    Jun 2006
    Posts
    251
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by ServerStorm View Post
    Hi mattastic,
    As your new site will be (I guess) the same content your old site had, then your old site should no longer reference these pages. In place of your old links, put new .php or .asp pages that redirect the users to an appropriate page on the new site. So lets say that your old site had http://www.oldsite.co.uk/index.asp?page=1 and that content has been moved to http://www.newsite.co.uk/index.asp?page=1 then you would need the http://www.oldsite.co.uk/index.asp?page=1 when a bot or user connects to it, to have redirection code here. I don't know .asp well so I can't help you with a redirect in .asp but this is what would need to go in the http://www.oldsite.co.uk/index.php?page=1
    Many thanks again Steve.

    My plan is to redirect the DNS and not shut it down - so a user clicks on http://www.oldsite.co.uk/index.asp?page=1 and regardless of the querystring, it sends them to http://www.oldsite.co.uk/oldsitearea which will be generic splash page with a link to the old content. http://ip address of old server/

    However, I've done a site search in google, and there are pages and pages of results, theres no doubt bookmarks I'm not aware of too so rather than put individual redirects on each page can I do an overall redirect? The query string will be exactly the same, just the domain will of changed.

    So could the redirect be something like this, where I can pass the parameters and querystring in the redirect and send them to the archived site:

    Code:
    setRedirect('http://ip address of server/' . 'index.asp?page=1');
    Thanks again

  12. #12
    SitePoint Addict
    Join Date
    Jun 2006
    Posts
    251
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    This is the piece of code I was after, just a basic redirect depending upon referrer:
    Code:
    <?php 
    $referer = $_SERVER['HTTP_REFERER'];
    if ( $referer == "http://www.oldsite.co.uk/" ) {
      header("Location: http://www.newsite.co.uk?" . $_SERVER['QUERY_STRING']);
      exit;
    };
    ?>
    What do you think?

  13. #13
    Foozle Reducer ServerStorm's Avatar
    Join Date
    Feb 2005
    Location
    Burlington, Canada
    Posts
    2,699
    Mentioned
    89 Post(s)
    Tagged
    6 Thread(s)
    Quote Originally Posted by mattastic View Post
    Many thanks again Steve.
    ... However, I've done a site search in google, and there are pages and pages of results, theres no doubt bookmarks I'm not aware of too so rather than put individual redirects on each page can I do an overall redirect? The query string will be exactly the same, just the domain will of changed.

    So could the redirect be something like this, where I can pass the parameters and querystring in the redirect and send them to the archived site:
    Code:
    setRedirect('http://ip address of server/' . 'index.asp?page=1');
    ...
    Hi mattastic,

    Yes this would work using the setRedirect() method.


    Quote Originally Posted by mattastic View Post
    This is the piece of code I was after, just a basic redirect depending upon referrer:
    Code:
    <?php 
    $referer = $_SERVER['HTTP_REFERER'];
    if ( $referer == "http://www.oldsite.co.uk/" ) {
      header("Location: http://www.newsite.co.uk?" . $_SERVER['QUERY_STRING']);
      exit;
    };
    ?>
    What do you think?
    Yes this looks like it is more along the lines of what DK recommended. This looks as if it would work.

    Regards,
    Steve
    ictus==""

  14. #14
    Certified Ethical Hacker silver trophybronze trophy dklynn's Avatar
    Join Date
    Feb 2002
    Location
    Auckland
    Posts
    14,644
    Mentioned
    19 Post(s)
    Tagged
    3 Thread(s)
    Quote Originally Posted by ServerStorm View Post
    Good suggestion Dk,

    I did not know how to do what you suggest, thus the php way as it will work, but I can understand how this may not be the best way as it is limited as/per regex matching.

    There's more than one way to skin a cat. I prefer the fast and simple way of using the server's modules ... which may not work because it appears that the OP may be on a WinDoze box (Wyatt - wwb_99 is the expert with M$ servers) which may make it problematic.

    Would you be able to provde the OP an example specific to his http://www.oldsite.co.uk/index.asp?page=1 to http://www.newsite.co.uk/index.asp?page=1, using a rewrite map?

    What? You've not seen the L o o o n n g g g tutorial article linked in my signature. It contains several years of information used to help members but put in a tutorial format with a boatload of coding examples which are explained. That tutorial was the basis for the sticky thread at the top of this board.

    Regards,
    Steve
    Regards,

    DK
    David K. Lynn - Data Koncepts is a long-time WebHostingBuzz (US/UK)
    Client and (unpaid) WHB Ambassador
    mod_rewrite Tutorial Article (setup, config, test & write
    mod_rewrite regex w/sample code) and Code Generator

  15. #15
    SitePoint Addict
    Join Date
    Jun 2006
    Posts
    251
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks for all the help, really appreciate it, I'll let you know how I get on.

    Thanks again

  16. #16
    Foozle Reducer ServerStorm's Avatar
    Join Date
    Feb 2005
    Location
    Burlington, Canada
    Posts
    2,699
    Mentioned
    89 Post(s)
    Tagged
    6 Thread(s)
    Quote Originally Posted by dklynn View Post
    Regards,
    What? You've not seen the L o o o n n g g g tutorial article linked in my signature. It contains several years of information used to help members but put in a tutorial format with a boatload of coding examples which are explained. That tutorial was the basis for the sticky thread at the top of this board.
    DK
    Awe that would have made me have to think and I didn't want to do that! Seriously, I missed that. I have not been participating in this forum too much over the years and need to make more time trolling it to get familiarized with the resources here.

    Thanks!
    Steve
    ictus==""

  17. #17
    Foozle Reducer ServerStorm's Avatar
    Join Date
    Feb 2005
    Location
    Burlington, Canada
    Posts
    2,699
    Mentioned
    89 Post(s)
    Tagged
    6 Thread(s)
    Quote Originally Posted by mattastic View Post
    Thanks for all the help, really appreciate it, I'll let you know how I get on.

    Thanks again
    Good luck. Although appreciation is nice, the reason we are here is to help, so glad we could be of assistance!

    Regards,
    Steve
    ictus==""

  18. #18
    Foozle Reducer ServerStorm's Avatar
    Join Date
    Feb 2005
    Location
    Burlington, Canada
    Posts
    2,699
    Mentioned
    89 Post(s)
    Tagged
    6 Thread(s)
    Quote Originally Posted by ServerStorm View Post
    Awe that would have made me have to think and I didn't want to do that! Seriously, I missed that. I have not been participating in this forum too much over the years and need to make more time trolling it to get familiarized with the resources here.

    Thanks!
    Steve
    Hey DK,

    ++ for your your ( @dklynn; ) excellent tutorial on Mod Rewrite. I now understand how a rewrite map can be made either in a simple text file or in conjunction with a Db. Very powerful solution, and I understand why you recommend it.

    Thanks for this!

    Regards,
    Steve
    ictus==""

  19. #19
    Certified Ethical Hacker silver trophybronze trophy dklynn's Avatar
    Join Date
    Feb 2002
    Location
    Auckland
    Posts
    14,644
    Mentioned
    19 Post(s)
    Tagged
    3 Thread(s)
    Steve,

    Thanks for that! I've had many members comment in a similar vein on the tutorial over the years.

    RewriteMap is NOT available to most webmasters as it requires server access (to the server or vhost configuration files) where they can be extremely powerful (using built-in functions like {tolower} and flat files-to-databases and programming) - or EXTREMELY dangerous (syntax errors can stop a server - not something you want on a shared server!). For most, however, all that's needed is a bit of regex (for "easy" redirections using pattern matching) or using a "handler file" to perform complex (flat file mapping or database look-ups) redirections. In coding, there's always more than one way to do something but you generally have to have a bit of knowledge where to start looking.

    Regards,

    DK
    David K. Lynn - Data Koncepts is a long-time WebHostingBuzz (US/UK)
    Client and (unpaid) WHB Ambassador
    mod_rewrite Tutorial Article (setup, config, test & write
    mod_rewrite regex w/sample code) and Code Generator


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •