将服务器请求重定向到/index.html以获取React / Angular SPA

问题描述 投票:0回答:2

假设我有一个React或Angular应用程序托管在www.mywebsite.com/index.html,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,它无法知道去哪里。这怎么办?

angular reactjs react-router angular-routing deep-linking
2个回答
2
投票

服务器不应该使用30X代码响应重定向/ aboutus到/index.html。相反它应该响应200 index.html。在这种情况下,浏览器将加载www ..... / aboutus链接(它将获得与.com / index.html路径相同的index.html,但只是与另一个URL)和FE famework脚本将处理其余的


0
投票

根据我在网上看到的内容,React / Angular应用程序将能够在重定向后加载应用程序内的/ aboutus路径。

^^这是真的 - 你所读到的并不是谎言。当路由器代码引导时,它检查当前url并查看是否有匹配,如果找到匹配,则呈现该路由 - 否则它将使用回退路由(可能是home或类似)。

© www.soinside.com 2019 - 2024. All rights reserved.