J'ai un serveur Apache qui exécute l'application Angular 6 sous Ma configuration apache actuelle est: /var/www/html/
. J'ai essayé d'ajouter un dossier /var/www/html/admin/
mais j'obtiens des erreurs Échec du chargement de la ressource: le serveur a répondu avec un statut de 404 (non trouvé) . Savez-vous quelle configuration je dois implémenter?
<Directory /var/www/html/admin>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
4 Réponses :
Voici mon exemple de travail:
<VirtualHost fancy.local:80> DocumentRoot "/abs/path/to/fancy/dist/browser" ServerName fancy.local <Directory "/abs/path/to/fancy/dist/browser"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Directory> </VirtualHost>
Où dist / browser
est une source générée avec index.html
En remarque, puisque vous n'hébergez que du code Angular, les Options
ne doivent pas être définies avec «Index», «FollowSymLinks», «Comprend» et «ExecCGI» pour des raisons de sécurité.
Votre projet angulaire (s base href) est faux. lorsque vous déployez votre application, spécifiez base-href sur la cmdline:
ng build --prod --base-href ./
pour référence https://angular.io/guide/deployment
Vous devez ajouter des règles de réécriture à .htaccess. Sinon, les requêtes vers vos routes ne seront pas redirigées vers index.html pour le rendu. Regardez le lien suivant pour Déploiement d'Apache: https://angular.io/guide/deployment
RewriteEngine On # If an existing asset or directory is requested go to it as it is RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d RewriteRule ^ - [L] # If the requested resource doesn't exist, use index.html RewriteRule ^ /index.html
Un de mes projets qui était sur le serveur tomcat
, j'ai fait ce qui suit:
src / WEB-INF
. WEB-INF
, créez web.xml
avec le code ci-dessous. "assets": [ { "input": "src/assets", "output": "/assets/" }, "src/favicon.ico", "src/WEB-INF" ],
angular.json
build>, lorsque vous construisez votre projet, il sera copié dans le dossier final ./dist
. <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <error-page> <error-code>404</error-code> <location>/</location> </error-page> </web-app>
index.html
J'espère que cela aidera quelqu'un.
Définissez-vous le Href de base correct dans votre fichier angular index.html?
@MikeOne et @sancelot ont correctement diagnostiqué le problème. Par défaut,
DocumentRoot
est défini sur/ var / www / html
, et comme vous utilisez le répertoireadmin
, vous devriez avoir utilisé la référence de base comme '/ admin' au lieu de '/' par défaut au moment de la compilation. Vous pouvez le modifier ultérieurement dansindex.html
généré si vous le souhaitez. @DmitryK a utiliséDocumentRoot
comme le chemin du répertoire pour héberger le code Angular, donc la référence de base par défaut fonctionne bien.J'ai écrit un article sur le même angular-6-deploy-on-apache-server-by-resolution-404, j'espère que cela vous aidera: joeljoseph.net/...