Greetings, I had a problem with my site earlier. It has been resolved, but it got me thinking a little bit about 301 redirects. 301 usually says this page has been moved permanently. What if somebody types some random URL on your domain and lands on a page that does not exist? Is there a way to create a "catch-all-page" that the user would goto automatically? For instance, if the page does not exist, transfer the user to the home page? Thanks for any information about this. I think having a script that does this would be much better than the error page the user sees. Sincerely, Travis Walters
Here are some types of 301 redirection, maybe it will help You PHP Single Page Redirect In order to redirect a static page to a new address simply enter the code below inside the index.php file. <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.newdomain.com/page.html"); exit(); ?> PHP Canonical Redirect The Canonical 301 Redirect will add (or remove) the www. prefixes to all the pages inside your domain. The code below redirects the visitors of the http://domain.com version to http://www.domain.com. <?php if (substr($_SERVER['HTTP_HOST'],0,3) != ‘www’) { header(’HTTP/1.1 301 Moved Permanently’); header(’Location: http://www.’.$_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI']); } ?> Apache .htaccess Canonical Redirect Follow the same steps as before but insert the code below instead (it will redirect all the visitors accessing http://domain.com to http://www.domain.com) Options +FollowSymlinks RewriteEngine on rewritecond %{http_host} ^domain.com [nc] rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc] ASP Single Page Redirect This redirect method is used with the Active Server Pages platform. <% Response.Status="301 Moved Permanently" Response.AddHeader='Location','http://www.new-url.com/' %> ASP Canonical Redirect The Canonical Redirect with ASP must be located in a script that is executed in every page on the server before the page content starts. <% If InStr(Request.ServerVariables("SERVER_NAME"),"www") = 0 Then Response.Status="301 Moved Permanently" Response.AddHeader "Location","http://www." & Request.ServerVariables("HTTP_HOST") & Request.ServerVariables("SCRIPT_NAME") End if %> HTTP 301 Redirect in ASP-VBScript <%@ Language=VBScript %> <% ' Permanent redirection Response.Status = "301 Moved Permanently" Response.AddHeader "Location", "http://www.domain.com/" Response.End %> Redirection with Javascript <html> <head> <script type="text/javascript"> window.location.href='http://www.domain.com/'; </script> </head> <body> This page has moved to <a href="http://domain.com/">http://domain.com/</a> </body> </html> Redirection with META Refresh <html> <head> <meta http-equiv="refresh" content="0;url=http://www.domain.com/"> </head> <body> This page has moved to <a href="http://domain.com/">http://domain.com/</a> </body> </html> Vilen
Hey there, The problem is not so much how to do a 301 redirect... If the page exists, I can do the redirect easy. However, I was interested in doing them on non-existent pages. For instance if somebody goes to www.example.com/dsgsdgsdgsdgsdgsdg.cfm the page will not exist but it would be nice if I could redirect the user to the home page www.example.com. Sincerely, Travis Walters
I don't think you should have a 301 for missing pages. You should have a great 404 page instead. If you still want, stick to 404 and show homepage content.