Angular为非角度路径上的404处理添加了额外的逻辑

Ste*_*ieB 11 redirect amazon-s3 angularjs

我有一个在S3中托管的角度站点,我有一个404路由设置(我使用哈希),如果有人举例

mysite/#/gibberish
Run Code Online (Sandbox Code Playgroud)

mysite/#/404
Run Code Online (Sandbox Code Playgroud)

在s3存储桶上,我们有一个重定向规则

mysite/gibberish
Run Code Online (Sandbox Code Playgroud)

mysite/404.html
Run Code Online (Sandbox Code Playgroud)

一切都很好

现在我只想添加一个额外的逻辑,如果有人输入

mysite的/客户ID

这是一个404以某种方式将其重定向到角度控制器,所以我可以将此请求发送到右页.

所以,在我的重定向S3规则中,为某些传入请求添加一个reg exp而不是发送它,即发送它即mysite /#/ handlethis

这可能吗 ?

小智 3

根据您选择的路由器,您可以执行如下操作(这就是我们所做的(嗯,不完全是这个,但接近)):

用户界面路由器

app.config(function ($urlRouterProvider) {
  var regx = /\/#\//; // match against /#/

  $urlRouterProvider.otherwise(function ($state, $location) {
    if (!regx.test($location.path()) { // if no match
      $state.go('customHandlingState', /** params **/, /** configuration **/ }); 
      // Transition to your custom handler state, with optional params/config. 
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

您可以将其与应用程序块stateChange[Start|Stop|Error|Success]中的自定义处理程序配对,以根据您的喜好对其进行自定义。run

我会提供一个如何使用 ngRoute 执行此操作的示例,但我两年前放弃了 ngRoute,从那以后就没有回头。因此,我无法给出建议,也无法找到解决您提出的问题的方法。

强烈建议你放弃这个秘籍中的 S3 部分,因为当涉及到客户端路由时,它会让你的生活变得更加轻松(从这里的个人经验来看,这是我对此事的看法 - 而不是事实)并处理你的404's/500's具有自定义状态处理程序的客户端。

如果需要,您可以连接到某些日志记录服务,并在客户端/个人最终处于错误状态时存储一些数据。

我想我的“反问题”是;使用 S3 重定向规则可以带来什么好处?以便更好地了解这里的需求和目标。


一些参考资料: