Mes parcours sont de Retour sur une page 404, Comment puis-je Corriger?
J'ai juste commencé à apprendre le framework Laravel et je vais avoir un problème de routage.
La seule voie qui le travail est la valeur par défaut de la maison de l'itinéraire qui est attachée à Laravel hors de la boîte.
J'utilise WAMP sur Windows et utilise PHP 5.4.3 et Apache 2.2.22, et j'ai aussi le mod_rewrite activé, et ont retiré l'index.php " à partir de la application.php fichier de configuration pour quitter une chaîne vide.
J'ai créé un nouveau contrôleur appelé Utilisateur:
class User_Controller extends Base_Controller {
public $restful = true;
public function get_index()
{
return View::make('user.index');
}
}
J'ai créé un fichier de vue de l'application/views/utilisateur/appelé index.php avec du code HTML, et dans routes.php j'ai ajouté ce qui suit:
Route::get('/', function () {
return View::make('home.index');
});
Route::get('user', function () {
return View::make('user.index');
});
Le premier itinéraire fonctionne bien lors de la visite de la racine (http://localhost/mysite/public
) dans mon navigateur web, mais quand j'essaie d'aller à mon deuxième route avec http://localhost/mysite/public/user
j'obtiens une erreur 404 not Found. Pourquoi en serait-il passe?
- Comment au sujet de votre
.htaccess
? - L' .htaccess n'est pas modifié, tout comme il a été hors de la boîte.
- Il semble que WAMP est la question. Ont changé de XAMPP maintenant et tout fonctionne très bien et comme il se doit. Devrais-je répondre à cette question en expliquant que WAMP est la question?
- Oui, vous pouvez. Donc tout le monde va le voir clairement votre problème est résolu maintenant.
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé d'ajouter ceci à votre fichier de routes au lieu
Route::get('user', "user@index")
?Le morceau de texte avant de le
@
,user
dans ce cas, va direct à la page de l'utilisateur contrôleur et le morceau de texte après la@
,index
, dirigera le script à lauser
fonctionpublic function get_index()
.Je vois que vous êtes en utilisant
$restful
, auquel cas vous pouvez configurer votreRoute
àRoute::any('user', 'user@index')
. Cela permettra de gérer à la foisPOST
etGET
, au lieu de les écrire à la fois séparément.Sur mon Ubuntu LAMPE d'installation, j'ai résolu ce problème avec les 2 changements.
sudo a2enmod rewrite
.AllowOverride All
Puis redémarrez le serveur Apache:
service apache2 restart
AllowOverride All
dans votre virtualhost fichier le site web peut utiliser quelle que soit la valeur que vous avez dans votre fichier de configuration d'apache à la place.À l'aide de WAMP cliquez sur l'icône de wamp ->apache->modules apache->faire défiler et de vérifier rewrite_module
Le redémarrage d'un
LoadModule rewrite_module
Note, le serveur redémarre automatiquement pour vous une fois que vous activez "rewrite_module"
sudo a2enmod rewrite
après cela, redémarrezsudo service apache2 restart
Avez-vous essayé de vérifier si
travaillait? Si oui, alors assurez-vous que tous vos chemin des dossiers n'ont pas toutes les lettres majuscules. J'ai eu la même situation et la conversion des lettres en minuscules aidé.
api/branches
travaillé, mais sur linux, j'ai dû changer cette url comme :index.php/api/branches
Toute façon de résoudre ce problème pour avoir la même url ?http://localhost/mysite/user
J'ai fait le même problème en utilisant EasyPHP. Trouvé que j'avais pour spécifier
AllowOverride All
dans mon<Directory>
bloc danshttpd.conf
. Sans cela, Apache ignore parfois votre.htaccess
.Mine fini par ressembler à cela...
Vous pouvez essayer de déplacer
root/public/.htaccess
àroot/.htaccess
et cela devrait fonctionnerRoutes
Les utiliser pour définir des itinéraires spécifiques qui ne sont pas gérés par les contrôleurs.
Contrôleurs
De les utiliser quand vous voulez pour une utilisation traditionnelle de l'architecture MVC
Solution à votre problème
Vous ne vous enregistrez pas les contrôleurs comme les routes, sauf si vous voulez un "nommé" en route pour l'action d'un contrôleur.
Plutôt que de créer un itinéraire pour vos contrôleurs actions, il vous suffit d'enregistrer votre contrôleur:
Maintenant votre contrôleur est enregistré, vous pouvez accéder à
http://localhost/mysite/public/user
et votreget_index
sera exécuté.Vous pouvez également enregistrer tous les contrôleurs en une seule fois:
N'oubliez pas le "
RewriteBase
" dans votrepublic/.htaccess
:Par exemple :
OK, donc après le dénigrement de ma tête sur ce problème depuis un peu plus d'un jour... je me suis levé et a fait ce que j'aurais fait hier, et DÉBOGUÉ ce qui se passait!
Ce que Laravel est en train de faire ici, c'est insérer le fichier
index.php
juste en face du chemin d'accès donné comme un Itinéraire. AINSI, par exemple, si vous avez spécifié unRoute::get('/account/create', ...,
et d'exécuter votre application à partir de direlocalhost/laravel/authenticate/public/account/create
sur votre navigateur, puis laravel souhaite exécuterlocalhost/authenticate/public/index.php/account/create
, mais à faire.... Apache a besoin de voir que les demandes par le biais de/wamp/www/laravel/laravel/authentication/public
(le chemin peut varier en fonction de l'endroit où votre application laravel est effectivement installé, mais la fuitepublic
est où la substitution doit prendre de la place) doit avoir un "RewriteRule" appliqué.Heureusement, laravel donne la règle de Réécriture dans une pratique
.htaccess
fichier dans votre applicationpublic
dossier. Le PROBLÈME est que le code que '.htaccess' fichier ne fonctionne pas avec le mode de WAMP est configuré de la boîte. La raison de ce qui SEMBLE être le problème suggéré par muvera en haut de ce fil -- le rewrite_module code doit être chargé par Apache avant laRewriteRule
choses fonctionnent. Diable, cela fait sens.La partie qui N'a PAS de sens: il suffit de
stopping
etrestarting
Apache services ne sera pas ramasser les changements nécessaires pour WAMP pour faire la bonne chose avec votre RewriteRule -- je sais, j'ai essayé à de nombreuses reprises!Ce qui fonctionne: faites les modifications proposées par muvera (voir en haut de la thread) pour charger le bon module. Ensuite, réinitialiser l'ensemble de votre session Windows, donc dumping Apache de mémoire tout à fait. Redémarrer (reload) WAMP, et le tour est joué! le fix, le bon RewriteRule est appliquée, yada, yada; je suis en train de vivre heureux pour toujours.
La bonne nouvelle de tout ça: j'en sais BEAUCOUP plus sur
.htaccess
,RewriteRule
, ethttpd.conf
fichiers maintenant. Il y a une bonne performance (performance) argument pour le déplacement de la logique de votre applicationpublic
.htaccess
fichier, et de le mettre dans unDirectory ...
section de votre httpd.conf dans votre Apache " bin " du dossier BTW (surtout si vous avez accès à ce dossier).Essayez d'activer le court des balises php dans votre php.ini. WAMP est hors de d'habitude et de laravel a besoin d'eux sur.
changement ci-dessus pour
Vous devez utiliser '/'(home/par défaut) à la fin de votre parcours
vous devez être à l'aide de Laravel 5 la commande
et dans routes.php
Laravel 5 les modifications de commande pour la vue et le contrôleur consultez la documentation j'ai eu la même erreur avant
Il suffit d'Exécuter dans votre terminal.
Le Principal problème de la route ne travail est il est mod_rewrite.si le module dans macos, linux n'est pas activée dans httpd.conf fichier de configuration d'apache, donc peut .htaccess pour le travail.
j'ai résolu ce problème en décommenter la ligne :
LoadModule rewrite_module libexec/apache2/mod_rewrite.donc
Enlever le # de ligne ci-dessus httpdf.conf. Alors ça fonctionne. profitez-en!
Je pense que vous avez supprimé par défaut .fichier htaccess à l'intérieur de la laravel dossier public. télécharger le fichier, il devrait résoudre votre problème.
les Commandes simples automatique de la charge les dépendances
et encore que vos fichiers importants sont manquants alors allez ici pour voir la totalité de la procédure
https://codingexpertise.blogspot.com/2018/11/laravel-new.html
Si vous utilisez Vagrant si Homestead, il est possible qu'il y a une erreur de montage du dossier partagé. Il ressemble à l'Errance prend vos fichiers de ce dossier et les swaps, les fichiers qui sont réellement sur la machine hôte au démarrage, donc si il y avait une erreur, vous êtes essentiellement en essayant d'accéder à votre Laravel l'installation à partir d'lorsque vous tout d'abord (c'est pourquoi vous obtenez seulement "à la maison"- qui a été généré lors de l'installation).
Vous pouvez facilement vérifier cela par sshing dans votre vm et la vérification de l'routes/web.php fichier pour voir si c'est réellement votre fichier. Si elle n'est pas, sortir et
vagrant halt
,vagrant up
, et recherchez les erreurs au démarrage.