Meine Routen geben einen 404 zurück, wie kann ich sie beheben?

Lesezeit: 5 Minuten

Benutzer-Avatar
JasonMortonNZ

Ich habe gerade angefangen, das Laravel-Framework zu lernen, und ich habe ein Problem mit dem Routing.

Die einzige Route, die funktioniert, ist die standardmäßige Home-Route, die standardmäßig mit Laravel verbunden ist.

Ich verwende WAMP unter Windows und es verwendet PHP 5.4.3 und Apache 2.2.22, und ich habe auch mod_rewrite aktiviert und habe „index.php“ aus der Konfigurationsdatei „application.php“ entfernt, um eine leere Zeichenfolge zu hinterlassen.

Ich habe einen neuen Controller namens erstellt Benutzer:

class User_Controller extends Base_Controller {

    public $restful = true;

    public function get_index() 
    {
        return View::make('user.index');
    }
}

Ich habe eine Ansichtsdatei in application/views/user/ aufgerufen index.php mit etwas grundlegendem HTML-Code, und in routes.php habe ich Folgendes hinzugefügt:

Route::get("https://stackoverflow.com/", function () {
    return View::make('home.index');
});

Route::get('user', function () {
    return View::make('user.index');
});

Die erste Route funktioniert gut beim Besuch des Stammverzeichnisses (http://localhost/mysite/public) in meinem Webbrowser, aber wenn ich versuche, zu meiner zweiten Route mit zu gehen http://localhost/mysite/public/user Ich erhalte einen 404 Not Found-Fehler. Warum sollte das passieren?

  • Die .htaccess ist unverändert, so wie sie im Auslieferungszustand war.

    – JasonMortonNZ

    3. August 2012 um 7:51 Uhr

  • Es scheint, dass WAMP das Problem war. Habe jetzt auf XAMPP umgestellt und alles funktioniert super und so wie es soll. Soll ich diese Frage selbst beantworten und erklären, dass WAMP das Problem war?

    – JasonMortonNZ

    4. August 2012 um 2:48 Uhr

  • @AquilaSolutions Ja, das darfst du. So wird jeder deutlich sehen, dass Ihr Problem jetzt gelöst ist.

    – Jocelyn

    30. September 2012 um 0:56 Uhr

Benutzer-Avatar
Andreas Vickers

Bei meiner Ubuntu LAMP-Installation habe ich dieses Problem mit den folgenden 2 Änderungen gelöst.

  1. Aktivieren Sie mod_rewrite auf dem Apache-Server: sudo a2enmod rewrite.
  2. Bearbeiten /etc/apache2/apache2.confÄndern der “AllowOverride”-Direktive für das /var/www-Verzeichnis (das mein Hauptdokumentstammverzeichnis ist): AllowOverride All

Starten Sie dann den Apache-Server neu: service apache2 restart

  • Dies hat dieses Problem für mich auf einem vagabundierenden Computer behoben, der von Puphpet heruntergeladen wurde.

    – Augenzwinkern

    4. Februar 2015 um 22:08 Uhr


  • Danke, Sie sind Lebensretter.

    – Hassan Murtaza

    30. Mai 2015 um 15:12 Uhr

  • Vielen Dank, ich habe meine 4 Stunden verschwendet, um das zu finden

    – Anshul Mishra

    18. August 2015 um 10:04 Uhr

  • Hat bei mir unter MacOS High Sierra 10.13.3 mit Laravel-5.4 funktioniert

    – Jewgenij Afanasjew

    5. März 2018 um 4:30 Uhr


  • @McSonk, wahrscheinlich ist die Frage für Windows. Diese alternative Lösung funktioniert für Ubuntu. Danke Alter.

    – Fendi Septiawan

    11. Juli 2018 um 3:31 Uhr

Benutzer-Avatar
Mario Uvera

Verwenden WAMP klicke auf wamp icon ->apache->apache modules->scroll und prüfe rewrite_module.

Starten Sie ein LoadModule rewrite_module neu

Hinweis: Die Serveranwendung wird automatisch neu gestartet, sobald Sie “rewrite_module” aktivieren.

  • VIELEN DANK, ich versuche seit gestern, dieses Problem zu lösen

    – Moe

    24. November 2013 um 12:29 Uhr

  • Dies scheint mir jedes Mal zu passieren, wenn ich WAMP und Laravel auf einem Computer installiere/neu installiere. Das ist immer das Problem. Hoffentlich wird es endlich in Erinnerung bleiben 😉

    – Kennmore

    13. Dezember 2013 um 7:53 Uhr

  • Unter Ubuntu 14.04 funktionierte ‘sudo a2enmod rewrite’ und dann ‘sudo service apache2 restart’.

    – nsp

    24. September 2014 um 8:54 Uhr

  • Aktivieren Sie für Linux-Systeme das Rewrite-Modul sudo a2enmod rewrite danach Neustart sudo service apache2 restart

    – ziel mich

    19. Juli 2016 um 19:53 Uhr


Haben Sie versucht zu überprüfen, ob

http://localhost/mysite/public/index.php/user 

arbeitete? Wenn dies der Fall ist, stellen Sie sicher, dass alle Ordner Ihres Pfads keine Großbuchstaben enthalten. Ich hatte die gleiche Situation und es hat geholfen, Buchstaben in Kleinbuchstaben umzuwandeln.

  • Vielen Dank. Ich gehe das Laravel-Buch (Laravel Starter) Schritt für Schritt durch und bin beim Routing bis zum Abschluss (Seite 13) hängen geblieben. Dies hat dieses Problem für mich gelöst.

    – Steve Lindsey

    5. Februar 2013 um 19:33 Uhr

  • Dies löste mein Problem. Ich hatte eine .htaccess im Stammverzeichnis meines Apache-Ordners, die Laravels htaccess beschädigte.

    – Maarten00

    11. Dezember 2013 um 10:51 Uhr

  • Dies löste ein anderes Problem, das ich hatte. Verwenden Sie Laravel zum Generieren von Seiten und Angular zum Aufrufen von REST, unter Windows den Aufruf an api/branches funktionierte, aber unter Linux musste ich diese URL wie folgt ändern: index.php/api/branches Gibt es eine Möglichkeit, dies zu lösen, um dieselben URLs zu haben?

    – Miroslavigne

    23. September 2015 um 9:57 Uhr


  • Ich hätte nie gedacht, dass es zwischen Groß- und Kleinschreibung unterscheidet

    – Lösche beide

    23. Mai 2017 um 5:35 Uhr

  • Platzieren Sie stattdessen die .htaccess-Datei aus dem Ordner public/ im Stammverzeichnis des Projekts, dann können Sie darauf zugreifen http://localhost/mysite/user

    – Rohan Khude

    10. Januar 2018 um 9:56 Uhr

Benutzer-Avatar
Papa Schlumpf

Haben Sie versucht, dies stattdessen zu Ihrer Routendatei hinzuzufügen Route::get('user', "user@index")?

Das Textstück vor dem @, user In diesem Fall wird die Seite an den Benutzercontroller und den Text nach dem weitergeleitet @, indexleitet das Skript an die user Funktion public function get_index().

Ich sehe, Sie verwenden $restfulin diesem Fall könnten Sie Ihre festlegen Route zu Route::any('user', 'user@index'). Dies wird beides bewältigen POST und GETanstatt sie beide separat auszuschreiben.

Ich hatte das gleiche Problem mit EasyPHP. Gefunden, dass ich angeben musste AllowOverride All in meinem <Directory> einsperren httpd.conf. Ohne dies ignoriert Apache manchmal Ihre .htaccess.

Meine sah am Ende so aus…

<Directory "D:/Dev">
    Options FollowSymLinks Indexes
    #### NEXT IS THE CRUCIAL LINE ####
    AllowOverride All                  
    Order deny,allow
    Allow from 127.0.0.1
    Deny from all
    Require all granted     
</Directory>

  • Ich habe auf Debian GNU/Linux 7.6 festgestellt, dass diese Antwort einen Teil dessen lieferte, was erforderlich war, zusätzlich zur Aktivierung des Moduls für Apache2 (a2enmod rewrite).

    – Kevin Buchs

    8. September 2014 um 19:16 Uhr

Benutzer-Avatar
David Arenburg

Du könntest versuchen, dich zu bewegen root/public/.htaccess zu root/.htaccess und es sollte funktionieren

  • Ich habe auf Debian GNU/Linux 7.6 festgestellt, dass diese Antwort einen Teil dessen lieferte, was erforderlich war, zusätzlich zur Aktivierung des Moduls für Apache2 (a2enmod rewrite).

    – Kevin Buchs

    8. September 2014 um 19:16 Uhr

Benutzer-Avatar
David Bärker

Routen

Verwenden Sie sie, um bestimmte Routen zu definieren, die nicht von Controllern verwaltet werden.

Controller

Verwenden Sie sie, wenn Sie die herkömmliche MVC-Architektur verwenden möchten

Lösung für Ihr Problem

Sie registrieren Controller nicht als Routen, es sei denn, Sie möchten eine bestimmte „benannte“ Route für eine Controller-Aktion.

Anstatt eine Route für die Aktionen Ihres Controllers zu erstellen, registrieren Sie einfach Ihren Controller:

Route::controller('user');

Jetzt ist Ihr Controller registriert, Sie können zu navigieren http://localhost/mysite/public/user und dein get_index wird ausgeführt.

Sie können auch alle Controller auf einmal registrieren:

Route::controller(Controller::detect());

1352940cookie-checkMeine Routen geben einen 404 zurück, wie kann ich sie beheben?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy