Computer Geeks

Computer Geeks

Geek Shop

Geek News

Geek Stuff

Science Geek

Computer Gaming

Linux Chat

Building Websites

Computer Forums

Computer Help Forum

Computer Hardware Forum

Computer Software Programs


Go Back   Computer Forums > Geek Stuff
FAQ Community Calendar Today's Posts Search

Geek Stuff General forum for discussing anything geek. If your topic doesn't fit in any of the other forums then post it here.

Computer Geeks
» Active Discussions
Computer Geeks
No Threads to Display.
» Other Websites
- Software Publishing

- Server Hardening
Reply
 
Thread Tools Display Modes
  #1  
Old 04-19-2006, 04:29 AM
yetanotherfcw yetanotherfcw is offline
Member
GB Advanced User
 
Join Date: Mar 2006
Posts: 60
Default Smooth 301 redirect php script

I need a smooth 301 redirect php script. More specifically, I am looking for a script that does the following:

Visitor goes to the page

yourSite1.com/animal/dog/1.html.

The visitor gets 301-redirected to

yourSite2.com/animal/dog/1.html.

How do I do this in php?
Reply With Quote
  #2  
Old 04-19-2006, 05:04 AM
Soulwatcher's Avatar
Soulwatcher Soulwatcher is offline
Senior Member
GB GEEK
 
Join Date: Feb 2006
Posts: 309
Send a message via MSN to Soulwatcher
Default

Does it have to be php? You could set this up with apache using htaccess. A simple
Quote:
Redirect permanent /index.php http://www.website2.com/index.php
would do the trick. And it would take less than 2 minutes to set it up.
Reply With Quote
  #3  
Old 04-19-2006, 05:17 AM
yetanotherfcw yetanotherfcw is offline
Member
GB Advanced User
 
Join Date: Mar 2006
Posts: 60
Default

php or .htaccess.

Well actually, I need to remap number of pages.
Reply With Quote
  #4  
Old 04-19-2006, 05:27 AM
Soulwatcher's Avatar
Soulwatcher Soulwatcher is offline
Senior Member
GB GEEK
 
Join Date: Feb 2006
Posts: 309
Send a message via MSN to Soulwatcher
Default

Quote:
Originally Posted by yetanotherfcw
php or .htaccess.

Well actually, I need to remap number of pages.
I would use .htaccess, but I never tryed to redirect more than one page. So I am unsure if it will work. If you try it let me know how it works out.
Reply With Quote
  #5  
Old 04-19-2006, 05:40 AM
Coop Coop is offline
Member
GB Beginner
 
Join Date: Apr 2006
Posts: 34
Default

If you really want to use php, there are several ways to do it. The simplist is with a straight 301 redirect with

Quote:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.domain.org/index.php");
?>
Obviously replacing http://www.domain.org/index.php with the URL you want to redirect to. To use this method, the file must replace the original file you are wanting to redirect from.


A more flexible method is to use a map. The advantage of this is that it has a default URL that redirects, typically, to your home page (prevents loss of traffic when pages are moved or deleted). In addition, the map allows you to effectively redirect from multiple URL's to there new location.

Code:
<?php
$map = array(
'/old/1.html' => '/new/2.html',
'/old/2.php' => '/newlocation/3.html');

if (isset($map[$_SERVER['REDIRECT_URL']])) {
    $new_loc = 'http://' .
               $_SERVER['HTTP_HOST'] .
               $map[$_SERVER['REDIRECT_URL']];
    if (isset($_SERVER['REDIRECT_QUERY_STRING'])) {
        $new_loc .= '?' .
                    $_SERVER['REDIRECT_QUERY_STRING'];
    }
    header("Location: $new_loc");
} else {
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".$_SERVER['HTTP_HOST']);
}
?>

You should save this as error.php in the root directory of your site, and then add an .htaccess file with the following directive :

ErrorDocument 404 /error.php

That is just to handle 404 errors, you can also add additional error codes if you wish. With this script, if there is no map for the missing page, then you get 301 redirected to the home page of the site. However, if the missing page is one of the pages mapped in the map array, the script will 301 redirect you to that page instead.

These scripts are most useful when the new loocation on your site does not mirror the structure of the original location.

HTH
__________________
Coop
Reply With Quote
  #6  
Old 04-19-2006, 05:43 AM
yetanotherfcw yetanotherfcw is offline
Member
GB Advanced User
 
Join Date: Mar 2006
Posts: 60
Default

Quote:
Originally Posted by Soulwatcher
I would use .htaccess, but I never tryed to redirect more than one page. So I am unsure if it will work. If you try it let me know how it works out.
Ok, well, I get the feeling that it might be easier to write a short php script to do this.
Reply With Quote
  #7  
Old 04-19-2006, 06:02 AM
Coop Coop is offline
Member
GB Beginner
 
Join Date: Apr 2006
Posts: 34
Default

Oops, just spotted a typo, and I can't edit the original post. Please ignore the above script and use :-

Code:
<?php
$map = array(
'/old/1.html' => '/new/2.html',
'/old/2.php' => '/newlocation/3.html');

if (isset($map[$_SERVER['REDIRECT_URL']])) {
    $new_loc = 'http://' .
               $_SERVER['HTTP_HOST'] .
               $map[$_SERVER['REDIRECT_URL']];
    if (isset($_SERVER['REDIRECT_QUERY_STRING'])) {
        $new_loc .= '?' .
                    $_SERVER['REDIRECT_QUERY_STRING'];
    }
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: $new_loc");
} else {
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".$_SERVER['HTTP_HOST']);
}
?>
instead. I missed out the header line in the original.


Also, it is possible to use .htaccess to redirect all files in one location to another, providing the directory structure of the destination remains the same. But the last time I tried that, I got lots of odd problems occuring with other SEO rules in the .htaccess file, so I changed to using the php script instead, which is much easier to maintain IMO.
__________________
Coop
Reply With Quote
  #8  
Old 04-19-2006, 06:41 AM
yetanotherfcw yetanotherfcw is offline
Member
GB Advanced User
 
Join Date: Mar 2006
Posts: 60
Default

This doesn't work well if there are a couple of thousand pages to redirect, does it?
Reply With Quote
  #9  
Old 04-19-2006, 06:59 AM
Coop Coop is offline
Member
GB Beginner
 
Join Date: Apr 2006
Posts: 34
Default

Not for a simple domain redirect, no. Sorry, I should have given you the exact code to use. I got myself muddled as to what you actually wanted. I would try this :-

Code:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.domain.org".$_SERVER['REQUEST_URI']);
?>
Replacing domain.org with the destination domain. This will work for all ordinary GET requests, but would require further work if you wanted it to deal with POST requests as well.
__________________
Coop
Reply With Quote
  #10  
Old 02-06-2009, 03:45 AM
ErikBam ErikBam is offline
Junior Member
GB Newbie
 
Join Date: Feb 2009
Posts: 2
Default Smooth 301 redirect php script

This doesn't work well if there are a couple of thousand pages to redirect, does it?
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Powered by vBadvanced CMPS v3.2.3

All times are GMT -5. The time now is 12:08 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
HTML Help provided by HTML Help Central.