删除angularjs中的传入URL的hashbang

时间:2018-02-09 09:56:12

标签: javascript angularjs html5 single-page-application

从其他网页重定向用户时,是否可以从angularjs网址中删除hashbang?

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

然而,如果我尝试从其他地方链接到我的网站而不使用hashbang,我会得到“无法获得/回家”。我正在测试的URL是https:// localhost:9001 / home。这适用于页面,但不能直接粘贴到地址栏。

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

我以这种方式配置了应用程序:

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

更新

我正在使用gulp作为我的测试服务器(我忘了提到它)。唯一需要进行的更改是添加“fallback”参数以启用重新路由。

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

2 个答案:

答案 0 :(得分:0)

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

创建重写规则以重写指向根索引页的链接 调整你的JS,使它生成hashtag而不是URL。

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

答案 1 :(得分:0)

删除漂亮网址的哈希标记。只需按照以下步骤操作:

1.在标题<base href="/" />内的 index.html 中添加基本网址。

2.在Cofig文件中启用html 5 mode true

$locationProvider.html5Mode(true);

3.从href链接中删除#。

4.如果您为Refering使用Apache配置.htaccess文件。 html5mode需要后端重写规则,所以你也必须这样做。