gpt4 book ai didi

javascript - Angular url 路由不适用于直接访问

转载 作者:行者123 更新时间:2023-11-28 13:21:00 25 4
gpt4 key购买 nike

我已经使用 AngularJS 在我的项目上设置了路由,以便在单击菜单按钮时加载不同的模板。该模板基于浏览器 URL。唯一的问题是直接访问 URL 时模板不会加载。相反,它将加载一个空白页面(未找到对象)。如何克服这个问题?

因此该项目位于本地驱动器上的文件夹/project4 中。有三个菜单按钮,其中两个链接到:

project4/aboutproject4/contact

这是 HTML 部分:

<html>
<head>
<base href="/ordina/angular/project4/">
<link href=
"//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel=
"stylesheet">
<link href=
"//netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" rel=
"stylesheet">
<script src=
"https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
<script src=
"//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script>
<script src="script.js"></script>

<title></title>
</head>

<body>
<header>
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/">Angular Routing
Example</a>
</div>

<ul class="nav navbar-nav navbar-right">
<li>
<a href=""><i class="fa fa-home"></i> Home</a>
</li>

<li>
<a href="about"><i class="fa fa-shield"></i> About</a>
</li>

<li>
<a href="contact"><i class="fa fa-comment"></i>
Contact</a>
</li>
</ul>
</div>
</nav>
</header>

<div id="main">
<div>
<p>This text is not being shown in the frontend.</p>
</div>
</div>
</body>
</html>

这是 .js 文件:

// script.js

// create the module and name it scotchApp
var scotchApp = angular.module('scotchApp', ['ngRoute']);

// configure our routes
scotchApp.config(function ($logProvider, $routeProvider, $locationProvider) {

$logProvider.debugEnabled(true);

$locationProvider.html5Mode(true);

$routeProvider

// route for the home page
.when('/', {
templateUrl : 'pages/home.html',
controller : 'mainController',
controllerAs: 'home'
})

// route for the about page
.when('/about', {
templateUrl : 'pages/about.html',
controller : 'aboutController',
controllerAs: 'about'
})

// route for the contact page
.when('/contact', {
templateUrl : 'pages/contact.html',
controller : 'contactController',
controllerAs: 'contact'
});

//$locationProvider.hashPrefix('!');




});

// create the controller and inject Angular's $scope
scotchApp.controller('mainController', function($scope) {
// create a message to display in our view
$scope.message = 'Everyone come and see how good I look!';
});

scotchApp.controller('aboutController', function($scope) {
$scope.message = 'Look! I am an about page.';
});

scotchApp.controller('contactController', function($scope) {
$scope.message = 'Contact us! JK. This is just a demo.';
});

最佳答案

您已打开 html5 模式。为了使 URL 的 GET 请求起作用,您必须首先对 AngularJS 应用程序的入口点实现 URL 重写。 (这是在 .htaccess 中的服务器端完成的)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.html [NC,L]

编辑:XAMPP 中的 htaccess

  1. 创建 htaccess.txt 并将内容粘贴到其中
  2. 在 Windows 上执行:开始运行 > cmd
  3. 然后重命名c:\pathtoyourhtaccessfile\htaccess.txt .htaccess
  4. 您可能必须在 httpd.conf 中启用 htaccess 文件(抛出 XAMPP 控制面板)。查找这一行:AllowOverride All 它必须设置为“All”,而不是“None”或其他内容
  5. 重新启动 Apache

关于javascript - Angular url 路由不适用于直接访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33096398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com