Laravel 5 besoins index.php l'aide d'hôte virtuel Apache
Lorsque je charge les pages qui ne sont pas de racine, la page ne se charge pas, sans index.php avant la route. L'erreur que je reçois:
Not Found
The requested URL /login was not found on this server.
Apache/2.4.7 (Ubuntu) Server at mydomain.com Port 80
Pour commencer j'ai un fichier hôte virtuel contenant:
//also tried adding DirectoryIndex here before <directory>
<directory /var/www/mydomain.com>
DirectoryIndex index.php
AllowOverride ALL
</directory>
et un .htacces dans mon public :
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
J'ai un autre domaine avec le même .htaccess et appache config sur le même serveur et il fonctionne très bien. Aussi je n'ai redémarrer apache. Si j'utilise la fonction phpinfo sur mon index.php/page route je vois dans les Modules Chargés:
mod_rewrite mod_setenvif
Lors de l'exécution du site web en local avec xampp tout fonctionne bien.
Pendant des heures je vais essayer maintenant mais je ne peux pas le réparer ou de trouver toute erreur (les journaux sont vides) ou toutes les solutions que je n'ai pas encore essayé.
Edit:
Jutilise Ubuntu Ubuntu 14.04 x64 sur un océan numérique VPS. Et j'ai essayé de l'allumer et de l'éteindre de nouveau (comme l'a suggéré). La Version de PHP 5.5.9-1ubuntu4.9. J'ai suivi cette tutoriel pour la configuration de tout (sauf le direcoty partie). J'ai changé l'emplacement de la log d'apache et une erreur de fichier.journal est créé dans le répertoire, mais pas d'erreurs sont en elle.
Mon actuellement appache config est : (je l'ai en triple vérifié les parties blanches où le nom de domaine est).
Quand je lance apache2ctl -t D DUMP_VHOSTS-je obtenir
cela semble bien pour moi, aussi essayé de désactiver la configuration par défaut mais cela n'a pas aide.
Note: j'ai remplacé mon vrai nom de domaine avec mydomain.com en réalité, je utiliser mon vrai nom de domaine sur ces spots.
Pensée comment je sais pour sûr que le fichier conf im édition est celle utilisée par le domaine?
Vous devez vous connecter pour publier un commentaire.
C'est le
correctAlternative htaccess règle pour Laravel 5 suggéré d'utiliser lorsque la valeur par défaut ne fonctionne pas:La
Options +FollowSymLinks
, je crois, joue un rôle important parce que lesDirectotyIndex
agit comme un lien symbolique.Également vérifier /app/config/app.php pour vérifier que vous n'avez pas de fixer la configuration('app.url') pour contenir le index.php.
Si vous avez laravel installé dans un sous-répertoire de voir ceci:
Comment puis-je supprimer "public/index.php" dans l'url générée laravel?
Avez-vous essayé de la tourner tous off (arrêt), puis de le rallumer?
Si tout est comme vous le dites, cela devrait fonctionner. Je voudrais essayer un redémarrage pour voir si ça change quoi que ce soit.
Si elle ne fonctionne pas, veuillez mettre à jour avec l'OS que vous utilisez.
J'ai fini par supprimer entièrement fichier conf et copié à partir de l'un des thats de travail. J'ai pris de la valeur par défaut .htaccess de laravel et cela a fonctionné. Malheureusement, je ne comprends toujours pas ce qui n'allait pas bien. L'actuel fichier conf ressemble à
Mon .htaccess dans /public
J'avais presque exactement le même problème aujourd'hui, qui @dasper m'a aussi aidé sur. Je suis à l'aide de digital ocean Ubuntu 14.04 aussi, et j'ai eu à exécuter la commande
a2enmod rewrite
puis de recharger apache2. Il semble que, même si la réécriture est apparu pour être sur, il en fait ne l'était pas.Tout d'abord, assurez-vous que mode_rewrite est activé. Je suis sûr que vous avez probablement fait cela mais je veux être sûr de ne rien manquer.
Prochaine, voir ce que la version d'apache, vous êtes en cours d'exécution depuis la syntaxe a changé entre 2.2 et 2.4. Cela ne devrait pas être une grosse affaire et doute fortement de ce qui est le coupable, mais pourrait vous sauver de problèmes dans l'avenir
Ensuite, essayez de mettre de la réécriture d'état à l'intérieur de la vhost information à la place du fichier htaccess. Cela peut aider un peu avec les performances ainsi que de vous donner une console d'avertissement/d'erreur en le redémarrage d'apache où le htaccess erreurs pourraient être étouffée.
Au-delà de ce stade, je voudrais être à une perte sans plus de journalisation ou des informations à partir du serveur. Vous pouvez également ajouter
CustomLog
dans le vhost et rapport de toutes les demandes traitées par le serveur.Le problème pourrait être avec votre configuration d'un hôte virtuel et/ou un égaré .htaccess fichier.
Assurez-vous que votre .htaccess fichier est dans le public/ dossier et que les DocumentRoot est fixé à ce public/dossier.
Et aussi, le < Directory> directive n'est pas le contrôle de votre hôte virtuel, mais plutôt des contrôles le dossier lui-même et comment il peut (ou ne peut pas être) un accès sur le serveur. Pour modifier la configuration de l'hôte virtuel le faire à l'intérieur de la < VirtualHost> directive.
Voici un exemple de configuration d'un hôte virtuel:
Ici est la valeur par défaut Laravel de configuration d'Apache:
et voici une alternative:
Essayez de renommer le server.php dans votre dossier racine pour Laravel index.php et copiez le .fichier htaccess du répertoire /public à votre Laravel dossier racine.
Solution trouvée ici
Je crois que votre chemin d'accès au répertoire est incorrect. Vous avez besoin
/public
sur la fin parce que Laravel traite le répertoire en tant que la racine du site web. Essayez ceci:Mais la meilleure solution est de mettre le contenu de la
.htaccess
fichier dans votre hôte virtuel. Comme ceci:Aussi, assurez-vous que votre fichier de configuration est chargé en exécutant:
apache2ctl -t -D DUMP_VHOSTS
Cela permettra d'imprimer une liste de tous les chargés vhosts. Si le vôtre n'est pas dans la liste, puis assurez-vous qu'elle est activée:
a2ensite [name_of_your_config_file]
Puis redémarrez apache avec:
service apache2 reload
apache2ctl
commande dans ma réponse et publier les résultats.Encore une remarque: n'oubliez pas de modifier
/etc/hosts
et ajouter127.0.0.2 yourdomain.com