php - laravel tags
La ruta de guía de inicio rápido de Laravel no funciona (9)
Ok, soy nuevo en Laravel, así que fui directo a la documentación para comenzar. Hay agujeros masivos en la documentación, por lo que llevó mucho esfuerzo y Google para llenar los vacíos para obtener la configuración de Laravel. Ahora lo tengo configurado y pasé al siguiente paso de la guía de inicio rápido. Creé mi ruta
Route::get(''users'', function()
{
return ''Users!'';
});
Ahora dice:
Now, if you hit the /users route in your web browser, you should see Users!
Así que golpeé:
http://localhost/laravel/users
pero consigue un 404? Lo intenté
http://localhost/laravel/public/users
pero todavía un 404? Seguí los pasos de la guía de inicio rápido de la carta, ¿qué me estoy perdiendo?
El problema está bien explicado por Rubens anteriormente. Una solución más simple es usar el servidor PHP incorporado provisto al emitir este comando
php artisan serve --port=8080
Tenga en cuenta que estoy usando el puerto 8080 aquí, puede omitirlo. Ahora puede navegar por el sitio yendo a
localhost/users
y debería funcionar!
En mi caso ( Ubuntu 14.04 LTS & Apache 2.2
), estaba estancado en el paso # 1 de la solución de @Rubens. Pude ver la página con esta url: http://localhost/laravel/index.php/users
pero el paso 2 y otros no funcionaron.
También intenté agregar RewriteBase /laravel/public
a .htaccess
pero tampoco funcionó.
Luego, configuré un nuevo host virtual con la ayuda de este increíble tutorial: https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts (se balancean con estos tuts)
Además del tutorial, configuré DocumentRoot
(en el archivo example.com.conf
) de esta manera:
DocumentRoot /var/www/laravel/public
Sí, el public
es el gran problema aquí.
Por cierto, no pongas RewriteBase /laravel/
en tu archivo .htacces
, de lo contrario obtendrás un error HTTP/500
.
Ahora, puedo ver la página example.com/users
.
Es probable que Apache no esté leyendo el archivo público / .htaccess debido a que la directiva AllowOverride se ha establecido en None . Intenta configurarlo en Todo .
Laravel 4 ruta simple no funciona con mod_rewrite y .htaccess
Gracias. El conocimiento de lo anterior por @rubens, y un comentario de @GaryJ here me hizo hacer esto para que funcione desde mi archivo de hosts virtuales de Apache.
Copié estas líneas del archivo .htaccess en laravel dentro del nodo de la configuración de vhosts. Se eliminó mi archivo .htaccess (de todos modos no se aplicó, estoy en un host virtual de apache de Windows, laravel env)
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]
Mejor: luego leyó la respuesta de @ Ag0r0, eso funcionó. me faltaba la anulación de permiso, haciendo que lo anterior fuera necesario. una vez que allowoverride todo estaba allí, la configuración predeterminada sí funcionaba.
Parece que su aplicación Laravel es accesible a través de un alias Apache HTTP, porque su URL se ve así: http://localhost/laravel/
. Si este es el caso y suponiendo que http://localhost/laravel
está apuntando a su directorio público, entonces siga estos pasos:
- Intente navegar a su ruta esperada antes que con
/index.php/
, en su caso:http://localhost/laravel/index.php/users
. Si funciona (no 404), entonces su problema es con la configuración del Rewrite Module de Apache HTTP, debe seguir los siguientes pasos. - Edite el archivo
public/.htaccess
. - Debajo de la línea
RewriteEngine On
addRewriteBase /laravel/
. - Intenta navegar a una ruta existente.
Básicamente, si su aplicación reside en un alias o directorio virtual (digamos http://localhost/alias
) debe agregar una entrada en su regla de reescritura para reescribir el directorio base con alias
.
Sé que esta pregunta tiene 4 años pero aún tiene su significado. A Rubens Mariuzzo se le respondió correctamente, pero quiero agregar algunos puntos al respecto. Tu dijiste
"Hay agujeros masivos en la documentación, por lo que llevó mucho esfuerzo y Google para llenar los vacíos para obtener la configuración de Laravel".
Para los principiantes es difícil encontrar la forma correcta de configurar Laravel. Una vez que se domina es divertido desarrollar Laravel :). Hay cierta manera correcta de hacer esto.
- Descargar Laravel
- Configurar DB
- Mapa DB en .env
- Hacer auth: php artisan make: auth
- Crear modelo y migración juntos: php artisan make: modelo Todo -m
- Migrar: php artesanal migrar
- Crear controlador y rutas juntas: php artisan make: controlador TodoController --resource
- Crear vista para cada acción
- Codifique el controlador
La descripción detallada se da en este blog http://masterlaravel.blogspot.in/2017/08/laravelquick-start-composer-create.html
Tuve el mismo problema y pasé horas para resolverlo. Tengo varias aplicaciones bajo el mismo dominio, pero en diferentes segmentos. Así que la URL de Laravel es http://myhostname/mysubdir/
Mis controladores solo funcionaban como http://myhostname/mysubdir/index.php/mycontroller
En /var/www/.../public/.htaccess puse RewriteBase /mysubdir
y funcionó !!!
mi publicación anterior con la descripción del problema se eliminó, pero fue similar a la situación que se describe aquí.
de todos modos ... simplemente intenté todas las posibilidades que aquí se describen, así como en otras páginas, y no encontré solución a mi problema.
La nueva instalación de Laraval simplemente no funcionó ... Después de probar cada cosa de este post, decidí crear otra instalación nueva y ocurrió un milagro. Esta instalación realmente está funcionando ...
Así que mi consejo es: si no puede solucionar este problema, intente crear otra instalación del laravel y, en realidad, podría funcionar.
De hecho, esta podría ser la forma más fácil de solucionar su problema en caso de que esté comenzando desde el scrach.
por favor, consulte esta siguiente url y vea la configuración de RoboTamer:
http://forums.laravel.io/viewtopic.php?id=511
resolvió mi problema igual que el tuyo
solución en nginx:
servidor {
server_name .laravel.dev;
root /home/tamer/code/laravel/public;
index index.php index.html;
#browse folders if no index file
autoindex on;
# serve static files directly
location ~* /.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
}
# removes trailing slashes (prevents SEO duplicate content issues)
if (!-d $request_filename)
{
rewrite ^/(.+)/$ /$1 permanent;
}
# enforce NO www
if ($host ~* ^www/.(.*))
{
set $host_without_www $1;
rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;
}
# canonicalize codeigniter url end points
# if your default controller is something other than "welcome" you should change the following
if ($request_uri ~* ^(/lobby(/index)?|/index(.php)?)/?$)
{
rewrite ^(.*)$ / permanent;
}
# removes trailing "index" from all controllers
if ($request_uri ~* index/?$)
{
rewrite ^/(.*)/index/?$ /$1 permanent;
}
# unless the request is for a valid file (image, js, css, etc.), send to bootstrap
if (!-e $request_filename)
{
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}
# catch all
error_page 404 /index.php;
location ~ /.php$ {
try_files $uri =404;
fastcgi_pass unix:/tmp/php.socket;
fastcgi_index index.php;
#include fastcgi_params;
include /home/tamer/code/nginx/fastcgi_params;
}
access_log /home/tamer/code/laravel/storage/logs.access.log;
error_log /home/tamer/code/laravel/storage/logs.error.log;
}