如何在AngularJS中指定基本URL中的相对路径

时间:2017-06-09 14:41:35

标签: javascript html css angularjs

我正面临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中找不到任何我指定了绝对路径的位置。

那么如何指定相对路径,以便具有相同文件夹结构的任何人都可以运行演示应用程序?

任何高度适用的帮助/建议。

2 个答案:

答案 0 :(得分:1)

你试过了吗?

<base href="/" />
  

如果您要将应用部署到根上下文中(例如   https://myapp.com/),将基本网址设置为/:

<head>
  <base href="/">
  ...
</head>
  

如果您要将应用部署到子上下文中(例如   https://myapp.com/subapp/),将基本URL设置为的URL   子上下文

<head>
  <base href="/subapp/">
  ...
</head>

Angular Docs $location/nobase

Angular Docs $location

关于绝对路径,<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>