angular 在 apache 中使用 ngRoute 路由深度链接

angular route deep linking using ngRoute in apache

我有一个 angular js 应用程序,我在常规 html 页面中使用它还包含 angular 路由

           <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script> 
                <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular-route.js"></script>                  

在我的模块中

 var nameApp = angular.module('mainApp', ['ngRoute']); 

           mainApp.config(['$routeProvider','$locationProvider',function($routeProvider, $locationProvider) {
            console.log('config ');  
            $routeProvider

              .when('boxAuth', {
                  templateUrl: 'boxReturn.html',
                  controller: 'authController'
              });

              // configure html5 to get links working on jsfiddle
              $locationProvider.html5Mode(true);
            }])

        ;

现在,如果我尝试访问 url http://localhost:8082/boxAuth,它会出现 404 错误

如何使用 angular

深层链接到此 url

嗨,我想你忘了将 <base href="/" /> 添加到你的 index.html

<!doctype html>
<html lang="en" ng-app="mainApp">
    <head>
        <meta charset="UTF-8">
        <title>Angular Demo</title>
        <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet">
        <link rel="stylesheet" href="css/style.css">
        <base href="/" />
    </head>
    <body>
        <div ng-view>
        </div>
        <!-- Scripts -->
        <script src="lib/angular/angular.min.js"></script>
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular-route.js"></script>
        <script src="js/app.js"></script>
        <script src="js/controllersTest.js"></script>
    </body>
</html>

app.js

var mainApp = angular.module('mainApp', ['ngRoute']);

mainApp.config(['$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
        $routeProvider.
            when('/boxAuth', {
                templateUrl: 'partials/boxReturn.html',
                controller: 'authController'
            })
            .otherwise({
                redirectTo: '/boxAuth'
            });
        $locationProvider.html5Mode(true);
    }
]);

最后,您需要在根文件夹中添加 .htaccess 文件并粘贴此文件

RewriteEngine On 
Options FollowSymLinks

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /#/ [L]

我创建了一个类似的应用程序,这段代码对我有用。希望对你有帮助!

var 模块 = angular.module('MyApp', ['ngRoute']);

            module.config(['$routeProvider', function($routeProvider){
                $routeProvider.
                when('/abc', {
                    templateUrl: 'abc.jsp',
                    controller: 'MyController'
                }).
                when('/xyz.jsp', {
                    templeateUrl: '/Test1/xyz.jsp',
                    controller: 'LoginController'
                }).
                otherwise({
                    redirectTo: ''
                });
            }]);

无论路由如何,您都需要将服务器配置为 return 索引页面,以便您的 angular 应用程序加载

如果您不能这样做,请考虑使用散列 (#) 路由