Les itinéraires de mes utilisateurs actuels d'application tels que ceci/myapp /,/myapp //,/myaapp/dept /
Mon application est actuellement déployée sur un serveur http interne avec NGINX. L'autre serveur qui accepte le trafic externe exécute également NGINX et le transmet au serveur interne.
J'ai ajouté baseref =/myapp à l'index.html conformément à la documentation.
Si l'utilisateur va sur http://www.myexternalserver.com/myapp , l'application fonctionne parfaitement. Si l'utilisateur est dans la page et clique sur un lien interne tel que http://www.myexternalserver.com/myapp/myparameter , cela fonctionne. L'URL dans le navigateur change, la page est affichée comme prévu. Je devine qu'il est traité par Angular 2.
Malheureusement, lorsqu'un utilisateur tape directement l'URL: http://www.myexternalserver.com/myapp/myparameter , je reçois une erreur 404 commise par NGINX.
Je pense que je dois configurer les paramètres NGINX mais je ne sais pas comment modifier la configuration de NGINX ni quoi mettre dans le fichier sites-available/default /
Je viens d'avoir ce même problème et trouvé une solution. Ma base href est "/", cependant.
Ci-dessous mon nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name mysite.com www.mysite.com;
root /usr/share/nginx/html;
location / {
try_files $uri$args $uri$args/ /index.html;
}
}
}
J'avais aussi des problèmes ici, cela est maintenant envisagé dans la documentation angulaire: https://angular.io/guide/deployment
NGinx: utilisez try_files, comme décrit dans Applications du modèle de contrôleur frontal, modifiées pour servir index.html:
try_files $ uri $ uri//index.html;
J'ai eu le même problème avec un sous-domaine sur un site hébergé avec l'hébergement partagé HostGator. Il semble que cela fonctionne avec Apache 2.2.31.
La recherche autour de moi m'a finalement conduit à "Directives Apache" , ce qui m'a conduit à "Réponses d'erreur personnalisées" .
J'ai pu résoudre mon problème en créant un fichier .htaccess
dans mon dossier de sous-domaine contenant la ligne suivante:
ErrorDocument 404 /index.html
Bien que je regarde les outils de débogage, un code 404 est toujours renvoyé même s’il réussit.
METTRE À JOUR:
A été en mesure de résoudre le problème 404 en modifiant mon .htaccess
comme suit:
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
Maintenant, je suis correctement redirigé vers index.html et le code est 200.
Voici à quoi ressemble ma configuration de travail, légèrement différente de la réponse acceptée. Mon projet situé dans le dossier /usr/share/nginx/html/myapp
et le chemin de base index.html a/myapp/as url de base.
server {
listen 80;
sendfile on;
default_type application/octet-stream;
gzip on;
gzip_http_version 1.1;
gzip_disable "MSIE [1-6]\.";
gzip_min_length 256;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level 9;
root /usr/share/nginx/html;
location / {
try_files $uri$args $uri$args/ $uri/ /myapp/index.html =404;
}
}