javascript - 删除 angularjs 中传入 url 的 hashbang

标签 javascript angularjs html single-page-application

当从另一个网页重定向用户时,是否可以从 angularjs URL 中删除 hashbang?

我在 AngularJS 中有一个网站,我已经能够从我页面中所有 URL 的地址栏中删除 hashbang 符号(当从一个 View 重定向到另一个 View 时)。我根据 angularjs API 使用了 HTML5Mode: https://docs.angularjs.org/#html5-mode

但是,如果我尝试在不使用 hashbang 的情况下从其他地方链接到我的网站,我会得到“无法获取/home”。我正在测试的 URL 是 https://localhost:9001/home。这在页面内有效,但不会直接粘贴到地址栏。

我想知道 HTML5Mode 是否只适用于网页,但我找不到明确的解释。

我是这样配置应用程序的:

.config(['$locationProvider', function($locationProvider) {  
  $locationProvider.html5Mode({
    enabled: true,
    requireBase: false
  });  

更新

我正在使用 gulp 作为我的测试服务器(我忘记说了)。唯一需要的更改是添加“回退”参数以启用重新路由。

gulp.task('start-server', function () {
  connect.server({
  port: port,
  root: appHome,
  http: false,
  fallback: 'app/index.html',
  livereload: true,
  middleware: function () {
    return [cors];
  }
});

最佳答案

要实现您想要的,您需要:

创建重写规则以重写指向您的根索引页面的链接 调整您的 JS,使其生成主题标签而不是 URL。

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)     
</IfModule>

关于javascript - 删除 angularjs 中传入 url 的 hashbang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703121/

相关文章:

javascript 显示不同的谷歌分析

javascript - 返回上一页而不添加 URL 参数

php - $ 未在 JavaScript 中定义

angularjs - 在 Angular 指令中观察元素的高度

javascript - 使用 UI-Router 防止后退按钮的状态更改

angularjs - Pubnub AngularJS hereNow 函数 - 路由到不同的 View ?

javascript - 使用复选框交换 div 内所有内容的位置

javascript - 选择状态到div

HTML5 : hyperlink and new tab

javascript - 如何使用 javascript/jquery 在打印页面上设置 div 内容的样式?