vhosts conf pour une seule application de page

J’ai une application angular que je sers localement en utilisant Apache. Mon vhosts.conf est:

 ServerName my.app.com DirectoryIndex index.html DocumentRoot /export/www/app  order allow,deny allow from all RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.html/$1 [L]   

Si je vais à la racine de l’application, tout se passe bien. Je fais de la navigation dans l’application qui m’amène à my.app.com/some/location et toujours pas de problème.

Cependant, si je recharge la page à ce stade, je reçois une erreur 404. Pour revenir au point que je veux, je dois soit retourner à la racine et naviguer à nouveau via l’application, soit chercher par url my.app.com/#/some/location

Y a-t-il quelque chose que je peux faire avec une règle de réécriture pour que je n’aie pas besoin du hachage pour recharger la route? J’ai essayé de modifier ma règle existante pour:

 RewriteRule ^(.*)$ index.html/#/$1 [L] 

Toutes les idées grandement appréciées C

Le problème était que j’utilisais une nouvelle version d’apache où les règles de configuration avaient changé. Mes vhosts mis à jour se lisent maintenant

  ServerName my.app.com DirectoryIndex index.html DocumentRoot /export/www/app  order allow,deny allow from all RewriteEngine on RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^(.*) /index.html [NC,L]   

C’est bizarre que my.app.com/some/location fonctionne. Avec AcceptPAthInfo ON, httpd servira index.html et transmettra PATH_INFO de / some / location, mais cela ne devrait pas faire la bonne chose sur le JS côté client.

La réécriture que vous avez essayée semble vouloir remplacer entièrement votre réécriture existante. Mais, vous souhaitez redirect explicitement vers /index.html non relatif et append le drapeau [R] pour vous assurer que la redirection va jusqu’au client. Sinon, il ne s’agit que d’une substitution interne, et vous avez besoin de votre navigateur pour lire le # car celui-ci n’est géré que du côté client.