Web site forwarding and redirection methods:
- One can forward a web page URL or home page using the following web page with the "Refresh" directive:
<META HTTP-EQUIV="Refresh" Content="0; URL=http://www.company.com/dir1/">
or:
<html> <head> <META HTTP-EQUIV="Refresh" Content="3; URL=http://www.company.com/dir1/"> </head> <body> This page will forward to http://www.company.com/dir1/ in three seconds. <p> Please update your links. </body> </html>
- Use a CGI script to forward a home page: (mod_cgi)
ScriptAlias / /var/www/cgi-bin/redirect-script/
#!/usr/bin/perl print "Status: 301 Moved\r\n" . "Location: http://www.new-domain.com/\r\n" . "\r\n";
#!/usr/bin/perl -w use strict; use CGI qw/:standard/; print redirect('http://www.new-domain.com');
- Use a PHP script to redirect:
<?php header("Location: http://www.new-domain.com/"); ?>
- Use a Javascript to redirect:
<html> <head> <script language="Javascript" type="text/javascript"> <!-- Hide script //<![CDATA[ window.location.href="http://www.new-domain.com/" //]]> End script hiding --> </script> </head> </html>
- Use Apache module (mod_rewrite)
RewriteEngine On RewriteRule /.* http://www.new-domain.com/ [R]
- Use Apache module (mod_alias )
- Redirect Domain:
Redirect / http://www.new-domain.com/
Redirect permanent / http://www.new-domain.com/
- Redirect Page:
Redirect /web-page.html http://www.new-domain.com/destination-web-page.html
- Redirect directives take precedence over Alias and ScriptAlias directives.
- Other "Redirect" options include: temp (error 302) default - temporary redirect status, seeother (error 303) resource has been replaced and gone (error 410) resource has been permanently removed.
<VirtualHost XXX.XXX.XXX.XXX> ServerName directtolinux.com ServerAlias www.directtolinux.com ServerAlias direct-to-linux.com ServerAlias www.direct-to-linux.com ServerAlias digitalpenguins.com ServerAlias www.digitalpenguins.com Redirect permanent / http://www.yolinux.com/ </VirtualHost>
- Redirect Domain:
- Apache 301 redirect using the .htaccess file:
If one wants to permanently forward an entire web site to a new URL or forward a single page permanently and have the search engines update their database, one should use a 301 redirect. This may redirect to a new server or to itself but to a different domain. This tutorial shows how. This method is a variation of using the mod_alias redirection shown above except that it allows the customer to redirect themselves by providing a .htaccess file themselves.
RewriteEngine on RewriteCond %{HTTP_HOST} ^yolinux.com RewriteRule ^(.*)$ http://www.yolinux.com/$1 [R=permanent,L]
This configures Apache to command the web browser to redirect by performing a GET from the "redirected" web site the user is being forwarded to.
File: /etc/httpd/conf/httpd.conf (older systems used access.conf)
Default: This disables the processing of .htaccess files for the system.
<Directory /> AllowOverride None </Directory>
or for a specified directory:
<Directory /home/domain/public_html> AllowOverride None </Directory>
Specify directory containing site or page to be redirected:
<Directory /root-directory-of-web-site-to-be-redirected> AllowOverride All </Directory>
AllowOverride parameters: AuthConfig FileInfo Indexes Limits Options
File: .htaccess Create a file /home/domain/public_html/.htaccess in that directory of the domain to be forwarded that looks something like this:
- Redirect entire domain:
Redirect 301 / http://www.new-domain.com/
OR - Redirect specified pages:
Redirect 301 /old-page-1.html http://www.newdomain.com/new-page-1.html Redirect 301 /old-page-2.html http://www.newdomain.com/new-page-2.html
You may use the following directives:
- 301: permanent
- 302: temp
- 303: seeother
- 410: gone
Redirect permanent / http://www.newdomain.com/
If an incorrect directive is used in the httpd.conf or .htaccess file it will result in a server error. Check your log files: /var/log/httpd/error_log.
HTTP Code | Status | Description |
---|---|---|
301 | permanent | The resource has permanently moved |
302 | temp | The resource has temporarily moved |
303 | seeother | The resource has been replaced and refer to new resource |
305 | UseProxy | Use proxy to access site |
307 | Temp | The resource has temporarily moved |
410 | Tegone | The resource has permanently removed |
See RFC 2616 HTTP/1.1 protocol - Chapter 10.3
- Apache.org: mod_alias rewrite
- YoLinux Tutorial on web site and Apache configuration
- YoLinux Tutorial on securing an Apache web site with password protection
- pURL.com - Managed web page redirect service