从非基础URL启动AngularJS应用程序



我正在尝试解决与单页应用程序和gangularjs有关的简单问题。肯定必须有一种简单的方法来做到这一点。

首先考虑非单页应用程序的工作原理。假设我在根中有一个索引。如果我在浏览器中启动mysite.com/,默认情况下它将提供index.html,一切正常。如果我启动mysite.com/other/other.html,它也可以正常工作,因为其他.html是一个真实的文件,并且包含所有支持资源文件等。

现在考虑一个页面Angular应用程序,假设使用UI-Router。我创建了一个路线:状态=其他,url =/other and template =其他/其他。

如果我启动mysite.com。它加载了Angular Index.html文件,我按预期获取主页。然后,我可以转到浏览器并键入mysite.com/#/thoth,它将正确加载另一个.html页面,如预期

当我想直接将应用程序启动到mysite.com/other中时,问题就来了。我将遇到的第一个问题是404,因为即使有另一个目录,也没有index.html。/p>

以某种方式,服务器需要知道,对于Angular应用程序,最终没有资源文件名的任何URL都必须加载index.html,并让Angular Router提供实际页面。

我什至尝试使用服务器,当您请求url mysite.com/other时,请返回index.html。这确实成功地加载了Angular应用程序,但令我惊讶的是,mysite.com/other现在在URL中显示mysite.com/other#/。换句话说,它现在将其视为基本URL的一部分,因此我必须再次键入/其他(即mysite.com/other#/other)才能显示另一页。

我尝试使用基本标签和HTML5mode尝试了各种实验,但仍无法找到合适的解决方案。

我似乎已经弄清楚了解决方案。我将基本URL设置为/并打开html5mode。我还必须配置服务器以返回index.html,以供任何末尾没有文件的请求(即没有扩展)

最新更新