2015-09-18 64 views
0

我有一个角度的应用程序,它使用PHP作为API,前端也使用了一点点。Apache提供的角度应用程序

路由已成为不可能;只返回第一级路线。

我的结构如下:

  • /app/index.html
  • /应用/脚本/ [所有角文件]
  • /应用/视图/ [全部PHP解析的HTML文件]
  • /应用程序/ API/[应用PHP文件]

路由器(角):

angular.module('MyApp') 
.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) { 

$locationProvider.html5Mode(true); 

$routeProvider 
    .when('/', {redirectTo: '/home'}) 
    .when('/home', { 
     templateUrl: 'views/mainview.php?sec=home', 
     controller: 'HomeCtrl' 
    }) 
    .when('/user', { 
     templateUrl: 'views/mainview.php?sec=user', 
     controller: 'ProfileCtrl' 
    }); 

虚拟主机的Apache文件

<VirtualHost 127.0.0.2:80> 
    DocumentRoot "M:/site/app" 
    # names and emails commented out 
</VirtualHost> 

的.htaccess

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 
    RewriteRule ^/user/([0-9]+)$ /user?user=$1 
</IfModule> 

当我访问127.0.0.2,它重定向到/ home和工作正常。 当我访问/ user?id = 1时,它也可以正常工作。 但是,如果我检索/ user/1,那么只有主要的PHP解析HTML加载,但所有依赖项(脚本,CSS,其他任何)只是返回相同的主HTML文件,从而失败。

我见过manyStackOverflowresponses,到目前为止,我还没有能够解决什么...

谁能帮我做路由发生呢?

回答

0

似乎没有/ user/1的路由。尝试角文档中的类似

.when('/user/:userId') 

退房的例子:https://docs.angularjs.org/api/ngRoute/service/$route#example

+0

老实说,我不。我只是希望Apache将我的/用户/ 1翻译为/ user?id = 1,而Angular会处理这个问题 – Jago

+0

我的错误,我明白你现在要问什么。你有什么理由需要在Apache httpd级别添加它?您可以设置多个角度路线以使用相同的处理程序。祝你好运。 – scottseeker

+0

AFAIK在Angular可以处理它之前,Apache会尝试处理比1级更深的任何路径。所以/ user可以工作,但/ user/1不能。或者至少这是在这里似乎发生的事情。这就是为什么我必须告诉Apache将路线翻译为1级的深度。要么是这个,要么告诉Apache不要在虚拟主机中处理任何路由。 – Jago

相关问题