Eckige 2-routing und direkten Zugang zu einer spezifischen route : konfigurieren von Apache?

Ich entwickelte eine kleine Angular2 test-app, die neben anderen features, nutzt routing.

Es funktioniert gut, solange der Benutzer greift auf die home-Seite, dann navigiert zu den untergeordneten Seiten.

Wenn der Benutzer versucht, direkt auf eine Unterseite, bekam ich eine 404, wenn ich nicht den Webserver konfigurieren. Das ist völlig normal, da es keine "echte Seite" entsprechend der route.

Ich versuchte, fügen Sie die folgende Konfiguration in apache 2.2 zu behandeln HTML5 Push Zustand:

<Directory /var/www/html/angular2-sens>
    Options Indexes FollowSymLinks
    RewriteEngine On
    RewriteBase /angular2-sens
    RewriteRule ^index\.html$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /angular2-sens/index.html [L]
</Directory>

Macht es die Sache besser, als ich nicht mehr einen 404. Allerdings bin ich "nur" die Weiterleitung auf die Startseite der app und das routing nicht durchgeführt.

Was soll ich tun, um dies zu korrigieren ?

Meine index.html Seite :

<html>

<head>
    <title>Angular 2 QuickStart</title>

    <link  href="simplegrid.css" type="text/css">
    <link  href="sen.css" type="text/css">

    <script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
    <script src="node_modules/systemjs/dist/system.src.js"></script>
    <script src="node_modules/rxjs/bundles/Rx.js"></script>
    <script src="node_modules/angular2/bundles/angular2.js"></script>
    <script src="node_modules/angular2/bundles/http.js"></script>
    <script src="node_modules/angular2/bundles/router.js"></script>
<!-- dev
    <script src="node_modules/angular2/bundles/angular2.dev.js"></script>
    <script src="node_modules/angular2/bundles/http.dev.js"></script>
    <script src="node_modules/angular2/bundles/router.dev.js"></script>
-->

    <!-- 2. Configure SystemJS -->
    <script>
    System.config({
        map: {
            rxjs: 'node_modules/rxjs' //or wherever you have it installed
        },
        packages: {
        app: {
            format: 'register',
            defaultExtension: 'js'
        },
        rxjs: {
            defaultExtension: 'js'
        }
        }
    });
    System.import('app/boot')
    .then(null, console.error.bind(console));
    </script>

</head>

<!-- 3. Display the application -->
<body>
    <app>Chargement...</app>
</body>
<script>document.write('<base href="' + document.location + '" />');</script>
</html>

Meine app/boot.ts :

import {bootstrap}    from 'angular2/platform/browser';
import {HTTP_PROVIDERS} from 'angular2/http';
import {AppComponent} from './app.component';
import {ROUTER_PROVIDERS} from 'angular2/router';

import { enableProdMode } from 'angular2/core'; enableProdMode();

bootstrap(AppComponent, [HTTP_PROVIDERS,ROUTER_PROVIDERS]);

Und schließlich, meine app-Komponente ist :

import {bootstrap}    from 'angular2/platform/browser';
import {HTTP_PROVIDERS} from 'angular2/http';
import {AppComponent} from './app.component';
import {ROUTER_PROVIDERS} from 'angular2/router';

import { enableProdMode } from 'angular2/core'; enableProdMode();

bootstrap(AppComponent, [HTTP_PROVIDERS,ROUTER_PROVIDERS]);

Meine app-Komponente, wo das routing konfiguriert wird, ist :

import {Component} from 'angular2/core';
import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router';
import {SensComponent} from './sens.component';
import {GroupesPolitiquesComponent} from './groupes-politiques.component';
import {SenVignetteComponent} from './sen-vignette.component';

@Component({
    selector: 'app',
    template: `
<h1>Application Angular 2 Relative aux Sénateurs (AA2RSen)</h1>
<nav>
    <a [routerLink]="['Senateurs']">Tous les Sénateurs en cours de mandat</a>
    <a [routerLink]="['GroupesPolitiques']">Groupes politiques</a>
</nav>
<router-outlet></router-outlet>
`,
    directives: [ROUTER_DIRECTIVES]
})
@RouteConfig([
{path:'/senateurs', name: 'Senateurs', component: SensComponent},
{path:'/groupes',        name: 'GroupesPolitiques',       component: GroupesPolitiquesComponent},
{path:'/senateur/:matricule',      name: 'VignetteSenateur',   component: SenVignetteComponent}
])
export class AppComponent { }
Bitte überprüfen Sie stackoverflow.com/questions/31415052/... vor allem die <base href=""> tag.
Ihre Umleitung code hat mir sehr geholfen. Passt perfekt für mein server ich habe viele htaccess Dateien, aber keiner hat vorgeschlagen RewriteBase .Danke.

InformationsquelleAutor Ludovic Pénet | 2016-02-04

Schreibe einen Kommentar