html5Mode中的Angularjs链接问题[重复]
Posted
技术标签:
【中文标题】html5Mode中的Angularjs链接问题[重复]【英文标题】:Angularjs link issue in html5Mode [duplicate] 【发布时间】:2016-01-18 06:36:45 【问题描述】:我正在使用angularjs
,我正在使用html5Mode
。
在使用 html5Mode
之前,链接可以在同一页面和新标签页中使用。链接如下:
http://localhost:81/vahidnajafi/#/about
但在 html5Mode 下,它只能在同一页面中工作,但是当我在新标签页中打开它时,它会转到 404 Not found
页面。
http://localhost:81/vahidnajafi/about
谢谢。
【问题讨论】:
您使用的是什么类型的网络服务器?html5Mode
用于单页应用程序,因此它希望应用程序是单页。它按预期工作并在documentation 中描述。
基本上,确保您在 express 应用程序中引用了 Angular 应用程序的主目录:app.use(express.static(path.join(__dirname, 'app_client'))); app.use(function (req,res) res.sendfile(path.join(__dirname, 'app_client', 'index.html')) );并确保你的 templateUrl 路由属性以 / 开头,因此它知道从根目录引用模板的位置,而不是当前目录。
@awimley 谢谢。我应该在哪里使用此代码?
templateUrl 修复,在所有它们的开头使用 /,应该在使用 ngRoute 或 routeProvider 的地方使用。其余的(以 app.use 开头)应该在您的 express 应用程序中。
【参考方案1】:
您需要将请求重定向或重新路由到服务器上的根 url。
在 Angular 有机会对该路由执行某些操作之前,您的服务器会返回 404。
【讨论】:
以上是关于html5Mode中的Angularjs链接问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5 + AngularJS html5Mode
AngularJS - ui-router - MVC 5 - html5mode
使用 HTML5Mode 配置多个 AngularJS2 项目的 Nginx 配置
当 html5Mode 为真时,AngularJs 路由对服务器进行 HTTP 调用