猿问

没有散列“#”的AngularJS路由

我正在学习AngularJS,有一件事让我很恼火。

我用$routeProvider要声明我的应用程序的路由规则:

$routeProvider.when('/test', {
  controller: TestCtrl,
  templateUrl: 'views/test.html'}).otherwise({ redirectTo: '/test' });

但是当我在浏览器中导航到我的应用程序时,我看到app/#/test而不是app/test.

所以我的问题是为什么AngularJS会添加这个哈希#去URL?有可能避免吗?

没有散列“#”的AngularJS路由

哔哔one
浏览 564回答 3
3回答

慕村225694

如果像其他人所说的那样启用html 5模式,则创建.htaccess文件中包含以下内容(根据您的需要进行调整):RewriteEngine   OnRewriteBase     /RewriteCond     %{REQUEST_URI} !^(/index\.php|/img|/js|/css|/robots\.txt|/favicon\.ico)RewriteCond      %{REQUEST_FILENAME} !-fRewriteCond     %{REQUEST_FILENAME} !-dRewriteRule     ./index.html [L]当用户进入正确的路径时,用户将被引导到您的应用程序,而您的应用程序将读取该路径,并将他们带到正确的“页面”中。编辑:只需确保没有任何文件或目录名称与您的路由冲突。

30秒到达战场

让我们写一个简单而简短的答案。在路由器的末尾添加html 5模式(真);app.config(function($routeProvider,$locationProvider)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$routeProvider.when('/home',&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;templateUrl:'/html/home.html' &nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;&nbsp;&nbsp;$locationProvider.html5Mode(true);})在html头中添加底座标签<html><head> &nbsp;&nbsp;&nbsp;&nbsp;<meta&nbsp;charset="utf-8">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<base&nbsp;href="/"></head>
随时随地看视频慕课网APP
我要回答