簡體   English   中英

如何從 SPA 返回 HTTP 404 狀態代碼?

[英]How do I return a HTTP 404 status code from a SPA?

我看到了一些類似的問題(比如這個),但沒有一個專門解決這個問題。

所以 Google 現在支持 SPA大多數 web 瀏覽器支持 HTML5 pushState

我的 AngularJS(但可以是任何 JS 東西)網站正在使用 URL 來確定 API 路線。 然后執行 API 調用,然后相應地呈現內容。

但是,現在 Google 將此站點標記為“被黑客入侵”,因為每個 URL 都會返回 HTTP 200 狀態代碼(包括 example.com/get-free-viagra)。 公平,但我如何返回 404? 或者至少通知谷歌這是一個未找到的頁面? 他們似乎沒有提供該信息,我非常擔心 SEO。

我想到了一些想法:

  • 棄用我當前的設置(我正在使用 AWS S3 托管 static 網站),並改用 expressJS 框,中間件將執行 API 調用並在需要時返回 404。 但是,我不喜歡這種方法,因為它會損害性能(每個前端請求調用兩次 API)。
  • 使用window.location重定向到正確的 404 頁面。 但是,我不確定Google是否會遵循它並且已經不鼓勵更改URL。
  • 在未找到的頁面上使用rel="nofollow" ,但我覺得這還不夠。

我現在沮喪地傾向於第一個選項。

使用window.location重定向到正確的404頁面。 但是,我不確定Google是否會遵循它,並且已經不鼓勵更改URL。

你的假設不正確。 如果您重定向到適當的404頁面(或410),谷歌將非常好。 谷歌將遵循它,並將非常滿意這些信息。 它想知道偽造的URL,以確保它們不會被包括在他們的排名中。 他們會喜歡它!

作為提醒,雖然它不是執行重定向的首選方式,但Google接受並關注具有Refresh標記並且延遲設置為0的頁面,因為在某些棘手的情況下,根本沒有其他方法可以執行重定向。 這是Blogger頁面(由Google擁有)的推薦方法。

谷歌跟隨。

一種方法是使用 javascript 在頭部設置<meta name="robots" content="noindex" /> 。之后導航到真實頁面時一定要將其刪除。 在 Googles Search Console Help 上發現了這個解決方案,顯然設置 noindex 是他們在 angular.io 上的做法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM