route array routing http-status-code-404 laravel

routing - array - route destroy laravel



laravel 4 todas las rutas excepto el hogar dan como resultado un error 404 (17)

Solo probando laravel 4 que instalé usando compositor. Tener configurado un servidor virtual. Solo la ruta raíz está funcionando:

Route::get(''/'', function() { return View::make(''hello''); });

Incluso esto no está funcionando

Route::get(''/hello'', function() { return View::make(''hello''); });

Lo que trato de hacer es un TasksController at /tasks :

Route::resource(''tasks'', ''TasksController'');

Esto me está dando 404 también.

¿Qué podría estar haciendo mal? Seguí estas instrucciones durante la instalación: http://chris-schmitz.com/getting-started-with-laravel-4/

También tengo un archivo .htaccess predeterminado en la raíz de mi proyecto:

<IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>

Estoy en un Mac usando localhost.


Dado que Laravel 4 está cargando automáticamente los archivos de un mapa en un archivo estático, debe actualizar ese archivo cuando agrega un nuevo controlador. Ejecute este comando para reconstruir el archivo estático:

php composer.phar dump-autoload


Es como @GaryJ y @MartinGomez dijeron. Este es el contenido del .htaccess que debe establecerse en la carpeta pública para todos sus proyectos laravel 4 que se ejecutan en el servidor Apache:

<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On RewriteBase / # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>


Está bastante claro que el problema aparece debido al "mod_rewrite", en algunos casos basta con habilitar este módulo en Apache para solucionarlo.

Sin embargo, en mi caso, tuve que extender la configuración de VirtualHost de la siguiente manera:

<VirtualHost *:80> ServerName adplus.local ServerAdmin [email protected] DocumentRoot /var/www/adplus.local/project/public **<Directory "/var/www/adplus.local/project/public"> AllowOverride All </Directory>** ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>


Esta actualización funcionó para mí. En el archivo .htaccess simplemente agregue lo siguiente después de encender las Regrabaciones.

Options -Indexes Options +FollowSymLinks

Funcionó como el encanto


Este comentario puede ser un poco tarde pero puede ayudar. Tuve el mismo problema al enrutar a otra vista como esta:

Route::get(''index'', function () { return view(''index''); }); Route::get(''login'', function () { return view(''login''); });

Pero no funcionó, así que intenté todo lo que encontré en todas las publicaciones relacionadas, pero no fue suficiente para resolver mi problema, así que encontré estas líneas en el httpd.conf:

<Files ".ht*"> Require all denied </Files>

Así que cambié "denegado" a "concedido" y también comenté esta línea en mi .htaccess:

#RewriteBase /

¡Y funcionó! Creo que estas líneas hacen que Apache no tenga en cuenta el archivo .htaccess de su proyecto, por lo que convertirlo en un hecho hizo la diferencia. Espero que esto pueda ayudar a alguien con el mismo problema.

Trabajando en Apache Server 2 @ Manjaro Linux (basado en Archlinux)


Hubo un pequeño error en una respuesta anterior. Esto podría ayudar.

$ sudo a2enmod rewrite $ sudo service apache2 restart

Espero que sí.


Incluso después de habilitar mod_rewrite, puede enfrentar este problema si está creando alias su carpeta laravel / public.

Añadiendo

RewriteBase /your_apache_alias

para .htaccess hace el truco.


Intenté todo esto sin éxito, luego encontré otra publicación y cambié mi .htaccess a esto:

<IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ /index.php [L] </IfModule>


Ir

nano / etc / nginx / sites-available / yoursite

encuentre try_file y reemplace de la siguiente manera:

try_files $uri $uri/ /index.php?$query_string;


No necesita a / al definir nada más que el hogar:

Route::get(''hello'', function() { return View::make(''hello''); });

Deberia trabajar.


Para los usuarios de Nginx, probablemente haya copiado el servidor virtual default , pero Laravel requiere cierta personalización en la directiva de location para permitir que la aplicación Laravel haga el enrutamiento y no Nginx.

En su /etc/nginx/sites-available/your-site-name reemplace la directiva de ubicación con esto:

location / { try_files $uri $uri/ /index.php$is_args$args; }

Luego ejecute sudo service nginx reload para que los cambios entren en vigencia.


Solo por una risa, mira si /index.php/hello funciona.

Si es así, lo más probable es que sea un problema de .htaccess .


Tenía el mismo problema al ejecutar Laravel 4 en WAMP (Windows 8).
La solución que funcionó para mí fue:

  1. Abra apache httpd.conf y encuentre esta línea:

    #LoadModule rewrite_module modules/mod_rewrite.so

  2. Descomenta esta línea (elimina el # )
  3. Guardar httpd.conf
  4. Reiniciar WAMP

Debería estar funcionando!


Tenía exactamente el mismo problema.

Dos cosas que tenía que hacer para arreglar esto:

  1. habilitar rewrite_module en Apache
  2. Cambie AllowOverride de None a All , ejemplo (Apache 2.4.9):

    Índices de opciones FollowSymLinks MultiViews AllowOverride All Requerir todos concedidos

FYI: utilice Laravel Homestead junto con VirtualBox y Vagrant en lugar de WAMP. Contiene Nginx en lugar de Apache, pero todo funciona de manera predeterminada ya que está configurado explícitamente para Laravel.


Tuve el mismo problema y la solución fue habilitar el mod de reescritura en Apache2

En una terminal, use los siguientes comandos:

$ sudo a2enmod rewrite $ sudo service apache2 restart

¡Y magia!


Tuve este problema (en Windows con Apache 2.2 instalado manualmente), y la causa era una AllowOverride perdida en mi VirtualHost ya que el directorio raíz en httpd.conf estaba predeterminado en Ninguno.

FileInfo Options=MultiViews es el conjunto mínimo que necesitas para .htaccess de Laravel

p.ej

<VirtualHost *:80> DocumentRoot "C:/htdocs/domain.com/laravel/public" ServerName foo.domain.com <Directory "C:/htdocs/domain.com/laravel/public"> AllowOverride FileInfo Options=MultiViews </Directory> </VirtualHost>

O use AllowOverride All si esto no funciona y no le importa la seguridad.


Tuve un problema similar en Ubuntu 14.04 con Lumen 5.4.

La solución fue dos partes para mí. Primero en mi archivo /etc/apache2/sites-enabled/my_vhost.conf , tuve que agregar la siguiente entrada <Directory> para permitir modificaciones, después de declarar mi DocumentRoot :

DocumentRoot /var/www/path/to/my/app/public <Directory "/var/www/path/to/my/app/public"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>

Luego, tuve que habilitar las reescrituras con:

sudo a2enmod rewrite sudo service apache2 restart