首页 > 解决方案 > 为 React/Angular SPA 将服务器请求重定向到 /index.html

问题描述

假设我在 www.mywebsite.com/index.html 上托管了一个 React 或 Angular 应用程序,Apache 为 Web 应用程序文件提供服务。在应用程序中,我定义了许多路由,例如 /aboutus 或 /faq。但众所周知,实际上并不存在 /aboutus.html 或 /faq.html 文件。这些路由内置在 Web 应用程序的路由器中。

所以我想知道如果有人尝试直接访问 www.mywebsite.com/aboutus 而不首先在 www.mywebsite.com/index.html 加载网络应用程序会发生什么。我在网上读到,由于您只有一个实际文件,因此您必须为这种情况做些什么,将所有 http 请求重定向到 /index.html。如果您使用的是 Apache,则必须将其配置为重定向所有内容。

我想知道的是 React/Angular 路由器如何知道重定向后要加载哪个路由。例如,如果您访问 www.mywebsite.com/aboutus,它会重定向到 www.mywebsite.com/index.html,根据我在网上阅读的内容,React/Angular 应用程序将能够加载重定向后应用内的 /aboutus 路由。

我会想象 /aboutus 会在重定向中丢失。如果您的服务器重定向到 www.website.com/index.html,那么您现在位于不同的 URL 并且丢失了 /aboutus。Web 应用程序被加载,但没有原始目标 URL,它不知道去哪里。这怎么行?

标签: angularreactjsreact-routerangular-routingdeep-linking

解决方案


服务器不应使用 30X 代码响应将 /aboutus 重定向到 /index.html。相反,它应该响应 200 index.html。在这种情况下,浏览器将加载 www.......


推荐阅读