Redirecting 404 error with .htaccess via 301 for SEO etc
Solution 1
You will need to know something about the URLs, like do they have a specific directory or some query string element because you have to match for something. Otherwise you will have to redirect on the 404. If this is what is required then do something like this in your .htaccess:
ErrorDocument 404 /index.php
An error page redirect must be relative to root so you cannot use www.mydomain.com.
If you have a pattern to match too then use 301 instead of 302 because 301 is permanent and 302 is temporary. A 301 will get the old URLs removed from the search engines and the 302 will not.
Mod Rewrite Reference: http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
Solution 2
I came up with the solution and posted it on my blog
here is the htaccess code also
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]
but I posted other solutions on my blog too, it depends what you need really
Chris
Updated on September 03, 2020Comments
-
Chris over 3 years
I couldn't find a straight answer to my question and need to know it from the real experts.
I had a website which urls were generated by Joomla. I believe that tons of urls are around in the search engines and I really don't know which of them all. A 302 redirect would be an option, but I can't say which urls need to be redirected.
The only thing I know that all the urls were generated by a sef404 script, it's a SEO script for Joomla.
My question, how can I make sure that all the orphan urls on google and other search engines are delivered correctly with a .htaccess file?
How do I 301 redirect all 404 pages to the homepage (root document)
At the moment I use a custom 404.html error file, but there are too many files and will give a rollercoaster of custom 404 error pages
-
Admin over 11 yearsthis will 301 redirect ALL 404 pages to wherever you like, in the previous solution it is a 302
-
TheBlackBenzKid over 8 yearsThis should be the answer as the other answer is just a rewrite and not redirect +1
-
TheBlackBenzKid over 8 yearsMinus as this is not a redirect
-
Andrew over 8 yearsFor anyone who wants to know why this works as I did (httpd.apache.org/docs/2.2/mod/mod_rewrite.html): first line turns RewriteEngine on, second line sets a condition for the third line, ensuring that it's a non-existant file and passing the requested filename (using a server variable (%{})), third line matches everything, replaces it with the root folder, and sets two flags, the first (L) to stop any more rewrite rules from being applied, and the second (R=301) to force an external redirect using the error code 301.