Ich habe eine Angular-App mit ngRoute-Modul zusammen mit HTML5-Modus pushState für sauberere URL.Angular Route mit mehreren Schrägstrichen Ordnerpfad überschreiben
app.config(function($routeProvider, $locationProvider){
$locationProvider.html5Mode(true);
$routeProvider
//Route for home page
.when("/", {
templateUrl: "templates/main.html",
controller: "imageController",
})
//Route for about page
.when("/me", {
templateUrl: "templates/me.html",
controller: "imageController",
})
//404 error
.when("/404", {
template: "",
controller: "imageController",
title: "404 Error",
})
//Default route to/
.otherwise({
redirectTo: "/404",
});
});
Ich habe meine .htaccess-Datei geändert, um nachfolgende Schrägstriche ("/") neu zu schreiben.
RewriteEngine on
RewriteBase/
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
# Redirect urls without a trailing slash
RewriteRule ^(.*)/$ $1 [L,R=301]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule^index.html [L]
Dies funktioniert gut für einen abschließenden Schrägstrich, z. 'http://example.com/me/' aktualisiert 'http://example.com/me' und wird entsprechend weitergeleitet.
Das Routing bricht jedoch, wenn mehrere Schrägstriche für z. 'http://example.com/me/foo' führt zu einer unvollständigen Seite anstatt zu '/ 404' umzuleiten. Wie behebe ich das Problem, wenn '/ me/foo' route nicht existiert, wird es nach '/ 404' umgeleitet.
Wenn ich dies tue, wird meine "/ mich" Route nicht funktionieren. Meine Frage ist nicht spezifisch für "/ me", sondern allgemein für mehrere Schrägstriche. Für z.B. Ich möchte, dass "http://example.com/blah/blah" zu "/ 404" weitergeleitet wird. Irgendeine Idee? – stones4yap
Ja, die $ routeParams sollte für alle Routen mit mehreren Schrägstrichen funktionieren. Ich habe auch meine Antwort bearbeitet, um zu zeigen, wie man es ohne Params machen kann./ich und/me/foo sollten beide auf diese Weise arbeiten. – Ohjay44
Ich habe Ihren Vorschlag versucht, aber es funktioniert immer noch nicht. Liegt es vielleicht daran, dass ich HTML5 PushState aktiviert habe? Vielleicht muss ich meine .htaccess Neuschreiben anpassen? Alle anderen Ideen würden sehr geschätzt werden. Vielen Dank. – stones4yap