【问题标题】:Angular app served from Apache由 Apache 提供的 Angular 应用程序
【发布时间】:2015-12-15 23:17:37
【问题描述】:

我有一个 Angular 应用程序,它使用 PHP 作为 API 和一点前端。

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

我的结构如下:

  • /app/index.html
  • /app/scripts/[所有角度文件]
  • /app/views/[所有 PHP 解析的 HTML 文件]
  • /app/api/[app 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'
    });

vhosts 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,到目前为止我还没有解决任何问题......

谁能帮我实现路由?

【问题讨论】:

    标签: angularjs apache


    【解决方案1】:

    您似乎没有 /user/1 的路由。尝试类似

    .when('/user/:userId')
    

    查看 Angular 文档中的示例:https://docs.angularjs.org/api/ngRoute/service/$route#example

    【讨论】:

    • 确实我没有。我只是希望 Apache 将我的 /user/1 翻译成 /user?id=1 并且 Angular 会处理这个
    • 我的错,我明白你现在在问什么。您是否有理由需要在 Apache httpd 级别添加它?您可以设置多个角度路线以使用相同的处理程序。祝你好运。
    • AFAIK Apache 试图在 Angular 能够处理之前处理任何比 1 级别更深的路由。所以 /user 有效,但 /user/1 无效。或者至少这似乎是这里发生的事情。这就是为什么我必须告诉 Apache 将路由转换为 1 级深度。要么就是告诉 Apache 不要处理虚拟主机中的任何路由。
    猜你喜欢
    • 2017-12-17
    • 2018-04-24
    • 2023-03-15
    • 2016-09-17
    • 1970-01-01
    • 2014-01-21
    • 2017-01-05
    • 2020-01-01
    • 1970-01-01
    相关资源
    最近更新 更多