2016-11-08 1 views
1

Ich habe einige Routen definiert. Hier ist ein Ausschnitt:Angular 2 App bereitgestellt und wirft eine 404, wenn ich gehe zu mydomain.com/search

const appRoutes: Routes = [ 
    { 
    path: '', 
    component: HomeComponent 
    }, 
    { 
    path: 'search', 
    component: SearchComponent 
    } 
] 

Meine App jetzt bereitgestellt wurde, aber ich bin nicht in der Lage zu einer direkten Weg zu gehen wie mydomain.com/search, weil ich mit einem 404. Allerdings behandelt werde, kann ich zu mydomain.com/ gehen und klicken Sie auf eine Link zu /search von der Homepage. Das funktioniert gut.

Ich benutze Apache. Wie kann ich dieses 404-Problem beheben, sodass ich zu mydomain.com/search gehen kann und es funktioniert, indem es mir die Suchseite zeigt?

Ich weiß, es gibt eine Möglichkeit, dies zu tun, Hash-Location-Strategie verwenden, aber ich bin interessiert zu wissen, wie es auf dem Apache-Server tun.

Vielen Dank!

Antwort

2

Datei hinzufügen oder httpd.conf

<IfModule mod_rewrite.c> 
RewriteEngine On RewriteBase/
RewriteRule ^index\.html$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.html [L] 
</IfModule> 

Notwendigkeit AllowOverride Option Verzeichnis in httpd.conf

hier/var/www/html ist die Wurzel meines Projekts in .htaccess

hinzuzufügen

hinzufügen .htaccess-Datei zu einem Projekt

<Directory /var/www/html/> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Require all granted 
</Directory> 
+0

dank Eswar. Wo aktualisiere ich die Option AllowOverride? Es gibt ein paar von ihnen in httpd – user1354934

+0

auch mache ich AllowOverride alle, oder? Entschuldigung, ich bin neu. Danke – user1354934

+0

Während dieser Ansatz Ihre Antwort ist, lassen Sie mich Ihr Problem erklären und wie diese Antwort es behebt. Ihr Problem ist, dass der Webserver versucht, eine Datei oder ein Verzeichnis mit diesem Namen zu finden, wenn Sie versuchen, direkt zur URL/search zu gelangen. Dies ist jedoch keine tatsächliche Datei oder ein Verzeichnis, sondern eine Angular 2-Route ein 404 Fehler (nicht gefunden). Die Lösung besteht also darin, Ihren Webserver zu machen (wenn Sie Apache verwenden, würden Sie seine Konfiguration bearbeiten, dafür ist Apache zuständig) und es anweisen, alle Anfragen in dieses Verzeichnis in den Index des Angular 2 zu schreiben Anwendung (index.html). –

Verwandte Themen