2015-09-18 4 views
0

У меня есть Угловое приложение, которое использует PHP для API и немного для интерфейса.Угловое приложение от Apache

Маршрут стал невозможным; возвращаются только маршруты первого уровня.

Моя структура выглядит следующим образом:

  • /app/index.html
  • /приложение/скрипты/[все угловые файлы]
  • /приложение/просмотр/[все PHP-синтаксический анализ HTML-файлы ]
  • /приложение/API/[приложение PHP файлы]

Router (Угловое):

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, он перенаправляет/дома и работает отлично. Когда я получаю доступ/user? Id = 1, он также отлично работает. Но если я получаю/user/1, то загружается только основной HTML-файл, обрабатываемый php, но все зависимости (скрипты, 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 Apache пытается позаботиться о любом маршруте, который находится глубже 1 уровня, прежде чем Angular сможет справиться с этим. Так что/пользователь работает, но/user/1 нет. Или, по крайней мере, это то, что, кажется, происходит здесь. Вот почему я должен сказать Apache перевести маршруты на 1 уровень глубины. Либо это, либо просто скажите Apache, чтобы НЕ РУЧИТЬ любой маршрут в vhost. – Jago

Смежные вопросы