Today I was thinking about the way I use 301 redirect in .htaccess.
I know if I changed my directory structure on my webserver - for example to move related pages to a directory with a name that makes sense, that I can tell search engines where the page can be found now and keep my page rank for those pages.
Sometimes google reports about a missing sub page (404) sub.html, which I removed ages ago because it did not contain relevant information. To avoid that visitors receive a 404 I redirect them to the main page with a lot of information and well ranked.
But actually, am I not telling google now that the info that was on sub.html is now on main.html? Will google replace the info?
If people get 404 on my site, they receive a page that contains a link to the home page and a search box.
You should not redirect to the home page. You should redirect to a page with similar content. If there is no such related page, you should return 404 and the error page should contain links to the most relevant parts of your site.
If there is no such related page, you should return 404
Wouldn't a 410 be more appropriate? It need not make any difference to humans-- you can use the same physical page for both-- but a 410 at least tells search engines "Yes, I know it's not there, I removed it on purpose."
:: memo to self: figure out best Forum to raise intriguing question of what proportion of our htaccess now exists solely for the use of search engines ::