The HTTP response status code 301 Moved Permanently is used for permanent redirecting, meaning that links or records returning this response should be updated. The new URL should be provided in the Location field, included with the response. The 301 redirect is considered a best practice for upgrading users from HTTP to HTTPS.
RFC 2616
[Fielding, ''et al'' (1999-06). "10.3.2 301 Moved Permanently". RFC 2616, p 61. IETF, June 1999. Retrieved from https://tools.ietf.org/html/rfc2616#section-10.3.2.] states that:
* If a client has link-editing capabilities, it should update all references to the Request URL.
* The response is cacheable unless indicated otherwise.
* Unless the request method was HEAD, the entity should contain a small hypertext note with a hyperlink to the new URL(s).
* If the 301 status code is received in response to a request of any type other than GET or HEAD, the client must ask the user before redirecting.
Examples
Client request:
GET /index.php HTTP/1.1
Host: www.example.org
Server response:
HTTP/1.1 301 Moved Permanently
Location: https://www.example.org/index.asp
Using an .htaccess file
To fix problems with non-existing files or directories using a distributed .htaccess file:
Redirect 301 /calendar.html /calendar/
Redirect 301 /not_found.html /
Here is an example using a
.htaccess file to redirect a non-secure URL to a secure address without the leading "www":
RewriteEngine On
RewriteCond % off
RewriteCond % ^www\.(.*)$ CRewriteRule ^(.*)$ http://%1/$1 =301,L
Ray William Johnson is an American internet celebrity best known for his eponymous YouTube channel and his web series on that channel, ''Equals Three''. In 2013, the channel surpassed 10 million subscribers and had over 2 billion views, making ...
RewriteCond % on
RewriteCond % ^www\.(.*)$ CRewriteRule ^(.*)$ https://%1/$1 =301,L
Ray William Johnson is an American internet celebrity best known for his eponymous YouTube channel and his web series on that channel, ''Equals Three''. In 2013, the channel surpassed 10 million subscribers and had over 2 billion views, making ...
RewriteEngine On
RewriteCond % 80
RewriteRule ^(.*)$ https://example.com/$1 ,L 100% Completed
Static HTML
A custom directory redirect, using an index.html file:
Home
Using programming languages
Here is an example using
Perl
Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
CGI.pm:
print redirect("https://example.com/newpage.html");
Here is an example using a
PHP
PHP is a General-purpose programming language, general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementati ...
redirect:
Here is one way to redirect using Express.js
Express.js, or simply Express, is a back end web application framework for building RESTful APIs with Node.js, released as free and open-source software under the MIT License. It is designed for building web applications and APIs. It has been ...
:
app.all("/old/url", (req, res) => );
Caching server
Equivalently simple for an nginx configuration:
location /old/urlblocked/ On
Search engines
Both Bing and Google
Google LLC () is an American Multinational corporation, multinational technology company focusing on Search Engine, search engine technology, online advertising, cloud computing, software, computer software, quantum computing, e-commerce, ar ...
recommend using a 301 redirect to change the URL of a page as it is shown in search engine results, providing that URL will permanently change and is not due to be changed again any time soon.[Site Move Tool - Bing Webmaster Help & How-to - https://www.bing.com/webmaster/help/how-to-use-the-site-move-tool-bb8f5112][301 redirects - Google Webmaster Tools Help - https://support.google.com/webmasters/bin/answer.py?hl=en&answer=93633]
See also
* Hypertext Transfer Protocol
* List of HTTP status codes
* URL redirection
References
{{Reflist
Bibliography
301 HTTPS
Hypertext Transfer Protocol status codes