在处理 AngularJS 中的路由时删除哈希
remove hashes when dealing with routes in AngularJS
我使用 angular 制作了一个示例 SPA。我使用 Angular 路由功能,拥有一个布局页面,然后根据最终用户请求的 URL 注入和换出不同的视图。
一切都与索引页面上 href 路由中的哈希完美结合
<a href="#/page1">page1</a>
但是这样做,我的 URL 网页将像 http://localhost/angular/#/page1
所以我想删除 URL 中的哈希并使其像 http://localhost/angular/page1
要删除哈希值,您必须启用 html5Mode 路由并在索引页上设置基本 href
https://docs.angularjs.org/error/$location/nobase
我做了完全相同的事情(请看下面我的代码片段),但是它不起作用。我在本地主机 Apache 服务器上 运行。
var app = angular.module("myModule", ["ngRoute"])
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when("/page1", {
templateUrl: "partials/page1.html",
controller: "page1Controller"
})
.when("/page2", {
templateUrl: "partials/page2.html",
controller: "page2Controller"
})
$locationProvider.html5Mode(true);
})
.controller("page1Controller", function($scope) {
$scope.message = "Page1";
})
.controller("page2Controller", function($scope) {
$scope.message = "Page2";
})
<html ng-app="myModule">
<head>
<title>Angular Routing</title>
<script type="text/javascript" src="angular.js"></script>
<script type="text/javascript" src="angular-route.js"></script>
<script type="text/javascript" src="js.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
<base href="angular"></base>
</head>
<body>
<table>
<h3>Sammple Routing in AngularJS</h3>
<tr>
<td class="leftMenu">
<a href="page1">page1</a>
<a href="page2">page2</a>
</td>
<td class="mainContent">
<ng-view></ng-view>
<!--partials will be filled here-->
</td>
</tr>
</table>
</body>
我现在正在为 IIS 上的这个问题苦苦挣扎,在我的苦苦挣扎中,偶然发现了一个很棒的 Apache 指南:https://ngmilk.rocks/2015/03/09/angularjs-html5-mode-or-pretty-urls-on-apache-using-htaccess/
希望对您有所帮助。
我按照这篇文章从 URL 中删除哈希:https://scotch.io/tutorials/pretty-urls-in-angularjs-removing-the-hashtag这是他所做的快速代码:
app.js 或每 angular 页:
app.config(["$locationProvider",
function($locationProvider) {
$locationProvider.html5Mode(true);
}
]);
Angular 模板或每个 angular 页面必须在头部包含:
<base href="/">
我完全不确定内部工作原理,所以我无法解释它到底做了什么。我所知道的一切都来自那篇文章,所以请随意看一看。
编辑:<a href="#"></a>
可能有问题尝试使用像 <a href=""></a>
这样的空字符串它可以防止在单击死链接时将散列添加到 url 但仍然提供锚点悬停效果。
我使用 angular 制作了一个示例 SPA。我使用 Angular 路由功能,拥有一个布局页面,然后根据最终用户请求的 URL 注入和换出不同的视图。 一切都与索引页面上 href 路由中的哈希完美结合
<a href="#/page1">page1</a>
但是这样做,我的 URL 网页将像 http://localhost/angular/#/page1
所以我想删除 URL 中的哈希并使其像 http://localhost/angular/page1
要删除哈希值,您必须启用 html5Mode 路由并在索引页上设置基本 href
https://docs.angularjs.org/error/$location/nobase
我做了完全相同的事情(请看下面我的代码片段),但是它不起作用。我在本地主机 Apache 服务器上 运行。
var app = angular.module("myModule", ["ngRoute"])
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when("/page1", {
templateUrl: "partials/page1.html",
controller: "page1Controller"
})
.when("/page2", {
templateUrl: "partials/page2.html",
controller: "page2Controller"
})
$locationProvider.html5Mode(true);
})
.controller("page1Controller", function($scope) {
$scope.message = "Page1";
})
.controller("page2Controller", function($scope) {
$scope.message = "Page2";
})
<html ng-app="myModule">
<head>
<title>Angular Routing</title>
<script type="text/javascript" src="angular.js"></script>
<script type="text/javascript" src="angular-route.js"></script>
<script type="text/javascript" src="js.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
<base href="angular"></base>
</head>
<body>
<table>
<h3>Sammple Routing in AngularJS</h3>
<tr>
<td class="leftMenu">
<a href="page1">page1</a>
<a href="page2">page2</a>
</td>
<td class="mainContent">
<ng-view></ng-view>
<!--partials will be filled here-->
</td>
</tr>
</table>
</body>
我现在正在为 IIS 上的这个问题苦苦挣扎,在我的苦苦挣扎中,偶然发现了一个很棒的 Apache 指南:https://ngmilk.rocks/2015/03/09/angularjs-html5-mode-or-pretty-urls-on-apache-using-htaccess/
希望对您有所帮助。
我按照这篇文章从 URL 中删除哈希:https://scotch.io/tutorials/pretty-urls-in-angularjs-removing-the-hashtag这是他所做的快速代码:
app.js 或每 angular 页:
app.config(["$locationProvider",
function($locationProvider) {
$locationProvider.html5Mode(true);
}
]);
Angular 模板或每个 angular 页面必须在头部包含:
<base href="/">
我完全不确定内部工作原理,所以我无法解释它到底做了什么。我所知道的一切都来自那篇文章,所以请随意看一看。
编辑:<a href="#"></a>
可能有问题尝试使用像 <a href=""></a>
这样的空字符串它可以防止在单击死链接时将散列添加到 url 但仍然提供锚点悬停效果。