簡體   English   中英

GitHub 頁面不允許使用 Angular 自動重定向,它顯示 404 GitHub 頁面

[英]GitHub Pages doesn't allow automatic redirects with Angular, it shows 404 GitHub Page

GitHub 當我使用自動重定向到登錄路徑或嘗試直接訪問該路徑而不是 Angular 中的基本路徑時,頁面顯示 404。

我在 Angular 創建了一個應用程序,當它檢測到 session 未登錄時自動重定向到“/auth/login”。

所以我遇到的問題是,如果我直接訪問 URL“user.github.io/example-app”,應用程序可以正常工作,但是如果我直接訪問 URL“user.github.io/example-app/auth/ login”(或父路徑以外的任何路徑)向我拋出 404 GitHub 頁面。

即使我正在使用 PWA,在我的 Android 設備上安裝應用程序時,它也會直接拋出 GitHub 頁面的 404。

筆記:

我還注意到,如果我使用 Lighthouse 並使用 http-server 進行測試,它也會在執行測試時拋出 404。

使用 http-server 我可以在 Windows 上安裝應用程序,這確實向我顯示了應用程序,而不是我在 GitHub 頁面上遇到的 404。

tl;dr 使用HashLocationStrategyScully


Angular,默認使用History API進行路由。

該系統允許 JavaScript 告訴瀏覽器:

我操縱了 DOM,因此用戶可以有效地查看新頁面。 如果你去這個 URL然后服務器會發送給你這個頁面

不幸的是,默認情況下 Angular 沒有做任何事情。 可以使用三種方法讓服務器開始玩球。

  • 配置服務器以服務引導程序 HTML 文檔,然后依賴 JavaScript 為 URL 更新它(這對緩存不利,對 HTTP 狀態代碼不利,對搜索引擎不利,對搜索引擎不利,並且在 Github 頁面上不可能)。
  • 實施服務器端呈現(例如,使用Angular Universal ),您可以在其中使用 Node.js 或類似的代碼生成 HTML 服務器端以進行初始頁面加載,使用與您發送以在瀏覽器中運行的代碼相同的代碼。 (這在 Github 頁面上是不可能的)。
  • Static 站點生成(例如使用Scully ),您可以在構建時為所有頁面生成 static HTML 文檔。

或者,保持單個 HTML 文檔,放棄歷史 API,並將其替換為 URL 方案,該方案基於您只有一個 HTML 文檔的前提。 使用HashLocationStrategy )。

暫無
暫無

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

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