Laravel Schrägstrich nach der url-Umleitungen, um root-Ordner
Ich bin neu in Laravel und es scheint ein Idealer Rahmen, aber ich habe eine Frage, wenn es um das routing. Ich möchte die route alle get-Anfragen an eine controller-action namens " PageController@view aber, wenn das Präfix admin ich will es Weg zu Admin\AdminController@view. Ich habe den folgenden code:
Route::get('/{slug?}', 'PageController@view');
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin', 'before' => 'auth'), function()
{
Route::get('/', 'DashboardController@main');
});
Aber wenn ich unter: /admin, Laravel behandelt Sie wie eine Schnecke anstelle eines Präfix. Ist es allerdings etwas außer Funktion für die erste Zeile, oder muss ich einfach haben, schalten Sie die obigen Zeilen das richtige Ergebnis zu erhalten?
Neues problem:
Aber jetzt habe ich ein neues problem, wenn ich gehen, um http://www.mysite.com/laravel/public/admin/, Laravel leitet mich zu http://www.mysite.com/admin/ statt AdminController@main. Wenn ich entfernen Sie den Schrägstrich am Ende wie folgt: http://www.mysite.com/laravel/public/admin es funktioniert gut.
InformationsquelleAutor user1507868 | 2014-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie angeben, diese Routen in umgekehrter Reihenfolge sollte es funktionieren. Machen Sie Ihre meisten bestimmten Strecken zuerst und die allgemeineren später. Denken als ein "fangen Sie dieses, dieses und dieses, und dann wieder fallen, auf diese Allgemeine, wenn keine der oben genannten match".
Dein neues problem liegt in der (schlecht IMO) leiten Sie die Regel, dass Laravel 4.1 Lieferumfang. Die Regeln sehr viel davon, dass Ihr Laravel
public
- Verzeichnis liegt auf der Dokument-root des Servers. Hier ist die Regel:Wie Sie sehen können, ist das Sprichwort "wenn die aktuelle URL endet mit einem Schrägstrich, nur umleiten /{url}", also das loswerden der Schrägstrich. Das ist ja alles schön und gut, nur so lange, wie Sie Ihre installation befindet sich auf Ihrem server-Dokument-root.
Sie können dies beheben, indem ein
RewriteBase
(in deinem FallRewriteBase /laravel/public
) vor, dass die Regel in Ihrenpublic/.htaccess
- Datei, aber natürlich, dies wird sich nun ändern von Umgebung zu Umgebung. Deshalb betrachte ich den Wechsel von Laravel 4.0RedirectIftrailingSlash
- Funktion, um eine.htaccess
Regel eine schlechte Idee.Alternativ können Sie entfernen, dass
RewriteRule
vollständig und versuchen Sie nicht zu sorgen über die Tatsache, dass Ihre app reagieren nun auf beiden URLs/laravel/public/admin
und/laravel/public/admin/
.Es funktioniert. Danke!
aktualisiert meine Antwort mit einer Antwort für den zweiten Teil Ihrer Frage.
Ja, es funktioniert. Auch, cache löschen, bevor Sie die Seiten.
Reagiert auf beide urls ist sehr schlecht Praxis für SEO sehen, wie seine als duplicate content.
InformationsquelleAutor alexrussell
Prüfen Sie, ob Sie Ordner "admin" in Ihrem öffentlichen Ordner. Laravel automatisch umleitet, wenn es einen gibt.
InformationsquelleAutor Lazirro
Da die Reihenfolge ankommt, versuchen Sie, diese
Umleitung problem
Laravel Weiterleitungen von URL mit trailing slash an die URL ohne abschließenden slash - Standard-Verhalten. (Geben Sie die URL ohne abschließenden slash -> keine Umleitung erforderlich)
Eigentliche Umleitung ist nicht das problem. Das problem ist, Laravel nicht richtig raten "Basis" - URL und erzeugt falsche Weiterleitungs-URL für Sie.
Öffnen
app/config/app.php
- und set -url
Eintrag übereinstimmen Stamm des Projekts fest. Ich denke, es isthttp://www.mysite.com/laravel/public
in Ihrem Fall.Bearbeiten Sie die Frage bitte, und poste die VOLLSTÄNDIGE url, die Sie versuchen zu öffnen, und die VOLLSTÄNDIGE url, die Sie umgeleitet werden.
Ich habe die url in app/config/app.php aber Laravel noch leitet mich an den root-Ordner.
ich habe das gleiche problem, wenn Sie finden keine Lösung, dann lassen Sie es mich wissen
InformationsquelleAutor Andreyco
Folgende RewriteRule funktioniert für mich. Ich hatte zu entfernen die //$1 von alexrussel die Antwort von oben. Die /leitet mich zum root-Ordner.
Bin ich mit laravel v4.2, apache v2.4.7, php v5.5.9 auf Linux Mint 17 64-bit.
InformationsquelleAutor Sahil Ahuja
Wenn Sie wissen, den Namen des Verzeichnisses, machen Sie eine Regel für Sie. Dies funktioniert gut für mich:
InformationsquelleAutor user5023913