Want to redirect a URL from one location to another?
This simple guide shows you how to do it with Apache/.htaccess, PHP, JavaScript, HTML, and more.
Each redirect technique is briefly explained and includes ready-to-go, copy-&-paste examples.
Just grab the code you need and use it in good health.
May the redirects be with you!
- Redirect URL with PHP
- Redirect URL with JavaScript
- Redirect URL with HTML
- Redirect URL with Perl
- Redirect URL with ASP (VB Script)
- Redirect URL with Apache’s mod_alias
- Redirect URL with Apache’s mod_rewrite
- Example 1: Redirect from wwww to non-www
- Example 2: Redirect an entire domain
- Example 3: Redirect all HTML and PHP files
- Redirect 404 errors with Apache
- Using WordPress Redirection Plugin
Redirect URL with PHP
Redirecting with PHP is done using the header()
function, for example:
<?php
header('location: http://example.com/');
exit;
?>
All you need to do is change the URL to whatever you want. Note that it is important that this function be included at the beginning of the web page, before any HTML output. To learn more about customizing this technique, check out the PHP documentation.
To redirect via PHP after some period of time:
<?php
header('Refresh:5; URL=http://example.com/');
exit;
?>
Here we are redirecting to example.com
after 5
seconds. Modify as desired.
Redirect URL with JavaScript
Here is the easiest way to redirect a URL with JavaScript:
<script type="text/javascript">
document.location.href = 'http://example.com/';
</script>
Again, the only required modification is to change the URL according to your needs.
Redirect URL with HTML
Yes you can redirect the user to a new URL using plain old HTML. Here is an example:
<meta http-equiv="refresh" content="10; url=http://example.com/" />
This is referred to as a meta-refresh redirect. You can adjust the amount of time (in seconds) by changing 10
to whatever is necessary. Note that this redirect technique is frequently abused by spammers and other nefarious types, so be careful if you implement on a public site. In such cases, it is recommended to keep the refresh interval above 8 seconds to prevent any potential SEO penalties.
Redirect URL with Perl
Here are two ways to redirect URLs with Perl:
#!/usr/bin/perl
print "Location: http://example.com\n\n";
exit;
For more in-depth techniques, check out this article.
Redirect URL with ASP (VB Script)
To redirect a URL with ASP, add the following code:
<%@ Language=VBScript %>
<% response.status="301 moved permanently" Response.AddHeader "Location", "http://example.com" %>
Customize according to your needs.
Redirect URL with Apache’s mod_alias
The easiest way to redirect on Apache servers:
Redirect 301 /old-location.html http://example.com/new-location/
That code can be added to .htaccess or the Apache server configuration file. Here is the syntax for this technique:
[Directive] [Status Code] [Old URL] [New URL]
So you can change any of these factors as desired. For example, if we need to match the old URL dynamically, such that all of the following URLs are redirected:
http://example.com/old-directory/file-01.html
http://example.com/old-directory/file-02.html
http://example.com/old-directory/file-03.html
.
.
.
..we can use RedirectMatch
instead of Redirect
:
RedirectMatch 301 /old-directory/file-(.*)\.html http://example.com/new-directory/file-$1.html
Likewise, we can change the status code from 301
(permanent redirect) to 302
(temporary redirect). Or change it to any other valid status code as desired. Here is a guide to the regular expressions (regex) used in this RedirectMatch
technique:
(.*)
– matches any character (or no characters)\.
– matches a literal dot$1
– returns the pattern matched by the first(.*)
For more information about Apache regex, check out my free PDF guide, .htaccess Character Definitions. Also check out Redirect URLs with .htaccess for more .htaccess-redirect techniques.
Redirect URL with Apache’s mod_rewrite
A more powerful way to redirect with Apache is to use it’s rewrite module, mod_rewrite
. Here are some examples that can be added to .htaccess or the Apache configuration file.
Example 1: Redirect from wwww to non-www
This example redirects all www
versions of our URLs to their equivalent non-www
versions.
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
</IfModule>
This is referred to as canonicalization. Here are some notes about the regex used in this technique:
^
– denotes the beginning of the requested URI\.
– matches a literal dot$
– denotes the end of the requested URI[NC]
– makes the pattern match case-insensitive(.*)
– matches any character (or no characters)$1
– matches the pattern from the parentheses(.*)
in theRewriteRule
[R=301,L]
– sends a 301 “Permanent” status code, and instructs Apache to stop processing the rule set
For more information about Apache regex, check out my free PDF guide, .htaccess Character Definitions.
Example 2: Redirect an entire domain
To redirect everything from the current domain to a new domain:
<IfModule mod_rewrite.c>
RewriteRule ^/(.*) https://new-domain.tld/$1 [R=301,L]
</IfModule>
Likewise, to redirect all requests from a subdomain on the current site to the same subdomain on a new site:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} (.*)\.old-domain\.tld [NC]
RewriteRule ^/(.*) https://%1.new-domain.tld/$1 [R=301,L]
</IfModule>
Here are some notes about the regex used in these techniques:
^
– denotes the beginning of the requested URI(.*)
– matches any character (or no characters)$1
– matches the pattern from the parentheses(.*)
in theRewriteRule
%1
– matches the first pattern from the parentheses(.*)
in theRewriteCond
[R=301,L]
– sends a 301 “Permanent” status code, and instructs Apache to stop processing the rule set
Note that, for either of these techniques to work properly, both domains must have the same file structure. So any directories and resources on the current domain also exist on the new domain. Otherwise you’ll get a bunch of 404 “Not Found” errors on the new domain. For more information about Apache regex, check out my free PDF guide, .htaccess Character Definitions.
Example 3: Redirect all HTML and PHP files
Here is another, more sophisticated mod_rewrite
example:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/old-directory/(.*)\.(html|php)$ [NC]
RewriteRule (.*) http://example.com/new-directory/%1.%2 [R=301,L]
</IfModule>
Here we are redirecting all requests for any HTML or PHP files located in /old-directory/
. All matching requests are redirected to the same file located in /new-directory/
. Some notes about the regex used in this redirect:
^
– denotes the beginning of the requested URI(.*)
– matches any character (or no characters)\.
– matches a literal dot(html|php)
– matches eitherhtml
orphp
[NC]
– makes the pattern match case-insensitive%1
– matches the first pattern from the parentheses(.*)
in theRewriteCond
%2
– matches the second pattern from the parentheses(html|php)
in theRewriteCond
[R=301,L]
– sends a 301 “Permanent” status code, and instructs Apache to stop processing the rule set
For more information about Apache regex, check out my free PDF guide, .htaccess Character Definitions. Also check out my tutorial on different ways to redirect with mod_rewrite.
Note: To redirect a URL based on its query string, check out my tutorial, Redirect Query String via .htaccess
Redirect 404 errors with Apache
Here is a handy technique for redirecting all 404 “Not Found” errors to a specific URL.
ErrorDocument 404 http://example.com/wherever/
Simply change the URL to wherever and add the code to you site’s root .htaccess file, or add to the Apache configuration file.
Redirect with WordPress Plugin:
Last but not Least, If You use wordpress and want to do a simple expression redirect , ex: redirecting pages to clickmagick rotators so it can be used in emails and social media (clickmagick link are blocked in emails and autoresponsders).
In WordPress Admin Area, Go To Plugins, Add New, Install : Redirections
Activate.
To Redirect example1.com to example2.com :
1- Create a page and call it example1.com/redirect1
2- Go to Settings/Redirection : Add Redirection : And Add Source and target pages , clicks use simple Expression and done !
I Hope You guys can benefit fro those easy tips 🙂
C: Jeff Starr
Cheers …
Mark