Configuration d’Apache pour AngularJS avec html5Mode activé pour accéder à l’API PHP REST en dehors de DocumentRoot, comment faire?

J’ai la structure httpd suivante:

c:/ xampp/ htdocs/ mysite/ bower_components/ app/ index.html app.js views/ api/ index.php .htaccess 

Dans le dossier de l’ app , j’ai mon code d’application: HTML, JS, CSS, etc. En d’autres termes, mon frontal.

Dans le dossier api , j’ai mon api PHP REST: index.php . En d’autres termes, mon backend.

Comme je l’ai dit, j’utilise AngularJS et je voudrais activer html5Mode pour avoir une URL plus propre.

Je parviens à mettre juste l’interface pour travailler avec la configuration suivante dans Apache:

 NameVirtualHost *:8081  ServerName localhost:8081 DocumentRoot "C:/xampp/htdocs/mysite/app" Alias "/bower_components" "C:/xampp/htdocs/mysite/bower_components"  RewriteEngine on # Don't rewrite files or directories RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # Rewrite everything else to index.html to allow html5 state links RewriteRule ^ index.html [L]   

Avec la configuration ci-dessus, je peux exécuter mon frontend comme un charme. http://localhost:8081 me conduit à index.html et tous mes états dans mon $stateProvider sont également résolus.

Mais mes appels d’API échouent et je ne sais pas quoi faire.

J’ai le service REST suivant dans mon index.php :

 require 'vendor/autoload.php'; // Create Router instance $router = new \Bramus\Router\Router(); $router->get('/cart/items', function() { echo '{"items":[ {"name":"item1"}, {"name":"item2"} ]}'; }); // Run the Router $router->run(); 

Quand j’appelle de mon frontend:

 $http({ url: '/api/cart/items', method: 'GET' }).then(function (response) { // do stuff... }, function (error) { alert(error.data); }); 

L’appel tombe dans la règle de réécriture pour index.html. Tous mes appels d’API répondent à l’index.html.

Dans mon dossier api, j’ai le fichier .htaccess suivant:

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] Options -Indexes 

J’ai déjà essayé de mettre un Alias dans la configuration Apache pour le dossier api , mais le résultat était le même.

J’ai même essayé de C:/xampp/htdocs/mysite mon DocumentRoot vers C:/xampp/htdocs/mysite . De cette façon, mes appels à l’API sont résolus mais lorsque mysite http://localhost:8081 je reçois la liste des fichiers et dossiers de mysite .

Il semble si proche et pourtant si loin. J’espère que vous pouvez m’éclairer.