我使用LocationMatch
Apache指令将一些逻辑应用于AngularJS应用程序。为了测试,我的正则表达式覆盖了一个状态http://my.ui.com/login
的Apache
<LocationMatch "^/(login)(.*)">
Redirect "/login" "/login2"
</LocationMatch>
这个简单的Redirect
用于检查块是否已被触发。当我直接到达上面的URL(假URL,抱歉我无法共享真实的应用程序)时,我可以通过观察URL栏看到重定向工作。但是,如果使用ui-sref
按钮导航到此状态,则永远不会触发LocationMatch块。这是相关的AngularJS代码,我使用的是ui-router库:
用户界面状态
$stateProvider.state('login', {
url: '/login',
templateUrl: 'login.html',
controller: 'LoginCtrl'
});
按钮(点击不会触发Apache)
<button class="md-button" ui-sref="login">Login</button>
我猜测是因为AngularJS应用程序一次性加载,所以在发生stateChange时没有进行磁盘读取。有没有人知道Apache有更好的方法来检测AngularJS应用程序中的状态变化?