I saw a few questions like this around (like this one), but none of them tackle the problem specifically.
So Google is now supporting SPAs and most web browsers do HTML5 pushState.
My AngularJS (but could be any JS thing) website is using the URL to determine an API route. It then performs the API call and then renders the content accordingly.
However, right now Google tagged this site as "being hacked" since EVERY URL returns an HTTP 200 status code (example.com/get-free-viagra included). Fair, but how do I return a 404? Or at least inform Google that this is a not-found page? They don't seem to be providing that information and I'm seriously worried about SEO.
A few ideas came to my mind:
window.location
to redirect to a proper 404 page. However, I'm not sure if Google will follow it and it's already discouraged to change the URL.rel="nofollow"
on not found pages, but I don't feel this is enough.I'm now frustratingly leaning towards the first option right now.
It sounds smart since if there's an error, the end-user will still be redirected to the SPA. But it's not, don't redirect to the main document. Redirect it to a 404 page with the correct 404 code. The 404 document can still be the SPA document but you pass it along with the correct error code.
When a user requests a nonexistent URL on your website, you should return an individual error page that lets them know that the requested URL does not exist. You should also make sure that the server returns the correct HTTP status code “404“.
A 404 error page, also called an Error Document 404, is, first and foremost, a page that informs the user that the requested resource does not exist. For example, if a user follows a link and the target page does not exist anymore, the webserver should show a 404 error page.
404 error codes are generated when a user attempts to access a webpage that does not exist, has been moved, or has a dead or broken link. The 404 error code is one of the most frequent errors a web user encounters. Servers are required to respond to client requests, such as when a user attempts to visit a webpage.
Use window.location to redirect to a proper 404 page. However, I'm not sure if Google will follow it and it's already discouraged to change the URL.
Your assumption is not correct. Google will be very fine if you redirect to a proper 404 page (or a 410). Google will follow it and will be very happy with this information. It wants to know about bogus URLs to make sure these won't be included in their rankings. They will love it !!!
As a reminder, and although it is not the preferred way to perform a redirect, Google accepts and follows pages having a Refresh tag with its delay set to 0, because, in some tricky cases, there is simply no other way to perform a redirect. This is the recommended method for Blogger pages (owned by Google).
Google follows.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With