I got tired of always having to search google to remember the syntax for issuing seo friendly (300, 301, 302, 303, 305, 306, 307) Redirects using multiple programming languages and methods… so I made my own list!
Redirection Methods
- Redirect with meta http-equiv tags
- Redirect with javascript
- Redirect with PHP
- Redirect with Perl
- Redirect with ColdFusion (CFM)
- Redirect with ASP (VB Script)
- Redirect with shell script
- Redirect with mod_rewrite in apache htaccess
- Redirect with mod_alias in apache htaccess
- Redirect with ErrorDocument in apache htaccess
- Redirect with Django/Python
Am I missing something? Most definately! Please use the comment form below to suggest new code.
Redirect with meta http-equiv tags
These go in the <head> </head> section of your html. Usually when you use this meta redirect method you should also use the javascript method, just to be safe.
Refresh meta http-equiv tag
Redirects to http://www.askapache.com after 0 seconds.
<meta http-equiv="refresh" content="0;url=http://www.askapache.com" />
Redirect with javascript
These go in the <head> </head> section of your html.
Basic javascript Redirect method
Will redirect user to http://www.askapache.com immediately
<script type="text/javascript"> window.location.href='http://www.askapache.com'; </script>
Redirect after specific time period
This will redirect to http://www.askapache.com after 2 seconds
<body onload="javascript:setTimeout(function(){window.location.href='http://www.askapache.com'},2000);">
Redirect with PHP
Using “Location” header
<?php
header('Location:http://www.askapache.com');
exit;
exit();
?>
Using “Refresh” header
<?php
header('Refresh: 0; URL=http://www.askapache.com');
exit;
exit();
?>
Ultimate PHP method
It redirects to a page specified by “$url”. $mode can be:
- LOCATION: Redirect via Header “Location”
- REFRESH: Redirect via Header “Refresh”
- META: Redirect via HTML META tag
- JS: Redirect via JavaScript command
<?php
function do_redirect($url,$mode)
{
if (strncmp('http:',$url,5) && strncmp('https:',$url,6)) {
$starturl = ($_SERVER["HTTPS"] == 'on' ? 'https' : 'http') . '://'.
(empty($_SERVER['HTTP_HOST'])? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST']);
if ($url[0] != '/') $starturl .= dirname($_SERVER['PHP_SELF']).'/';
$url = "$starturl$url";
}
switch($mode) {
case 'LOCATION':
header("Location: $url");
exit;
case 'REFRESH':
header("Refresh: 0; URL=\"$url\"");
exit;
case 'META':
exit;
default:
?><script type="text/javascript">
window.location.href='<?=$url?>';
</script><?
}
exit;
}
?>
Redirect with Perl
Simple 302 Redirect with perl
#!/usr/bin/perl my $URL = "http://www.askapache.com"; print "Status: 302 Moved\nLocation: $URL\n\n";
Simpler 302 Redirect with perl
#!/usr/bin/perl print "Location: http://www.askapache.com\n\n"; exit;
Redirect with ColdFusion (CFM)
Using cheader for 301 “permanent” redirect
<cfheader statuscode="301" statustext="Moved Permanently"> <cfheader name="Location" value="http://www.askapache.com"> <cfabort>
Using clflocation for 302 “temporary” redirect
<cflocation url="http://www.askapache.com">
Redirect with ASP (VB Script)
301 Redirect
<%@ Language=VBScript %> <% response.status="301 moved permanently" Response.AddHeader "Location", "http://www.askapache.com" %>
Redirect with shell script
302 Redirect with sh shell script
#!/bin/sh echo "Content-type: text/html" echo "Location: http://www.askapache.com"; echo ""; exit 0;
Redirect with mod_rewrite in apache htaccess
See also Ultimate Apache htaccess article and URL Redirection
301 Redirect
Redirects permanently when a request is made to site.com/thisword.html to http://www.askapache.com
RewriteEngine On RewriteBase / RewriteRule ^thisword\.html$ http://www.askapache.com [R=301,NC,L]
302 Redirect
Redirects temporarily when a request is made to site.com/thisword.html to http://www.askapache.com
RewriteEngine On RewriteBase / RewriteRule ^thisword\.html$ http://www.askapache.com [R,NC,L]
Redirect with mod_alias in apache htaccess
301 Redirect
Redirect 301 /thisword.html http://www.askapache.com
or with RedirectPerm
RedirectPerm /thisword.html http://www.askapache.com
or with RedirectMatch
RedirectMatch 301 ^thisword\.html$ http://www.askapache.com
302 Redirect
Redirect 302 /thisword.html http://www.askapache.com
or with RedirectTemp
RedirectTemp /thisword.html http://www.askapache.com
or with RedirectMatch
RedirectMatch 302 ^thisword\.html$ http://www.askapache.com
Redirect with ErrorDocument in apache htaccess
302 Redirect
Issues a 302 Redirect to http://www.askapache.com when a file is not found. See also Force Apache to output any HTTP Status Code with ErrorDocument
ErrorDocument 404 http://www.askapache.com
Redirect with Python / Django
Thanks to thebjorn for contributing this one.
from django import http
def view(request):
return http.HttpResponseRedirect('http://www.askapache.com')
php refresh header headers href http
Related Articles
- Apache Environment Variables CGI Script
- 301 Redirect with mod_rewrite or RedirectMatch
- Rewrite underscores to hyphens for SEO URL
- Speed Tips: Remove Last-Modified Header
- htaccess HTTPS / SSL Tips, Tricks, and Hacks
- Redirect index.php to root “/”
- Manipulating HTTP Headers with htaccess
- Advanced HTTP Redirection
10.08.07 at 8:46 am
Thanks for this fantastic checklist! I will send my students to this page.
10.24.07 at 4:19 am
Thanks Ash! I will have to go through and clean up the code, especially adding code to do 307 Temporary Redirects, which should almost always be used instead of a 302 Redirect.
11.30.07 at 2:54 pm
Thanks for the list! saved me a bunch of time. If you’d like to add the code for Django/Python it is:
from django import http
def view(request):
return http.HttpResponseRedirect(’http://www.htaccesselite.com’)
12.10.07 at 1:16 am
Thanks for such nice list