我正面临AngularJS路线的非常奇怪的问题。我有一定的文件夹结构
js -> Angular ->
css -> Bootstrap ->
index.html
在IIS等某些服务器上托管时,所有路由都运行正常。但我复制了整个指令&粘贴到其他位置或与某人共享。如果他们使用文件系统运行,则会开始收到Files not found错误。
这是我的index.html的样子。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<base href="" />
<!--css-->
<link href="./css/Bootstrap/bootstrap.min.css" rel="stylesheet" />
</head>
<body ng-app="myApp">
<div class="container-fluid">
<!--content-->
<!--menu tabs-->
<div class="col-md-12" style="margin-top:10px;">
<a href="/car"> CAR</a> <br/>
<a href="/mobile">Mobile</a>
</div>
<!--angular template placeholder-->
<div ng-view> </div>
<!--footer-->
</div>
<!--js-->
<script src="./js/Angular/Lib/angular.js"></script>
<script src="./js/Angular/Lib/angular-route.js"></script>
<script src="./js/Angular/Config/ngRouteConfig.js"></script>
只有当我在html中出现 base 标记时才会出现这个404问题。如果我删除它,页面会呈现罚款。但这会停止运行角度路由。
我收到了一位来自我的大四学生的电子邮件,我不应该指定绝对路径,但我在index.html中找不到任何我指定了绝对路径的位置。
那么如何指定相对路径,以便具有相同文件夹结构的任何人都可以运行演示应用程序?
任何高度适用的帮助/建议。
答案 0 :(得分:1)
你试过了吗?
<base href="/" />
如果您要将应用部署到根上下文中(例如 https://myapp.com/),将基本网址设置为/:
<head>
<base href="/">
...
</head>
如果您要将应用部署到子上下文中(例如 https://myapp.com/subapp/),将基本URL设置为的URL 子上下文
<head>
<base href="/subapp/">
...
</head>
关于绝对路径,<a href="/car"> CAR</a>
不是绝对路径,但它会强制浏览器回顾Web服务器的ROOT目录以查找路由。因此,如果您共享的人将应用程序安装到子目录,那么这很可能会导致错误。
在这种情况下,他们应该在他们的Web服务器上设置<base href="to-wherever-they-put-the-thing" />
,或者您应该指定在Web服务器的ROOT目录中运行它。
答案 1 :(得分:0)
使用:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<!--
<base href="" />
-->
<script>
document.write('<base href="' + document.location + '" />');
</script>
<!--css-->
<link href="./css/Bootstrap/bootstrap.min.css" rel="stylesheet" />
</head>