route resource cache php dynamic laravel routing admin

php - resource - route view laravel



Laravel slash after url redirige a la carpeta raĆ­z (5)

Como el orden es importante, intente esto

Route::group(array(''prefix'' => ''admin'', ''namespace'' => ''Admin'', ''before'' => ''auth''), function() { Route::get(''/'', ''DashboardController@main''); }); Route::get(''/{slug?}'', ''PageController@view'');

Problema de redireccionamiento Laravel redirige de URL con barra diagonal a URL sin barra diagonal: comportamiento predeterminado. (Si ingresa URL sin barra diagonal -> no se necesita redirección) La redirección real no es el problema. El problema es que Laravel no puede adivinar la URL correcta de "base" y genera una URL de redireccionamiento incorrecta para usted.

Abra app/config/app.php y configure la entrada url para que coincida con la raíz de su proyecto. Supongo que es http://www.mysite.com/laravel/public en tu caso.

Soy nuevo en Laravel y parece un gran marco, pero tengo una pregunta cuando se trata de enrutamiento. Quiero enrutar todas las solicitudes de obtención a una acción del controlador llamada PageController @ view, pero cuando el prefijo es admin, quiero que enrute a Admin / AdminController @ view. Tengo el siguiente código:

Route::get(''/{slug?}'', ''PageController@view''); Route::group(array(''prefix'' => ''admin'', ''namespace'' => ''Admin'', ''before'' => ''auth''), function() { Route::get(''/'', ''DashboardController@main''); });

Pero cuando voy a: / admin, Laravel lo trata como una babosa en lugar de un prefijo. ¿Hay algún tipo de función excepto para la primera línea o simplemente tengo que cambiar las líneas anteriores para obtener el resultado correcto?

Nuevo problema

Pero ahora tengo un nuevo problema cuando voy a http://www.mysite.com/laravel/public/admin/ , Laravel me redirige a http://www.misitio.com/admin/ en lugar de llamar a AdminController @ main . Cuando elimino la barra al final de esta manera: http://www.misitio.com/laravel/public/admin funciona bien.


Compruebe si tiene la carpeta "admin" en su carpeta pública . Laravel automáticamente redirige si hay uno.


El siguiente RewriteRule funciona para mí. Tuve que eliminar el / in / $ 1 de la respuesta de alexrussel anterior. Incluir el / me redirecciona a la carpeta raíz.

#For http://localhost/work/proj1/public/a/ RewriteBase is /work/proj1/public RewriteBase /repo/qs/public RewriteRule ^(.*)/$ $1 [L,R=301]

Estoy usando laravel v4.2, apache v2.4.7, php v5.5.9 en Linux Mint 17 de 64 bits.


Si conoce el nombre del directorio, cree una regla para él. Esto funciona bien para mi:

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


Si especifica esas rutas en el orden opuesto, debería funcionar. Haga sus rutas más específicas primero, y las más genéricas más adelante. Piénselo como un "atrape esto, esto y esto, y luego recurra a este genérico cuando ninguno de los anteriores coincide".

Su nuevo problema radica en la regla de redirección (mala, IMO) con la que Laravel 4.1 se entrega. Las reglas suponen en gran medida que su directorio public Laravel se encuentra en la raíz del documento del servidor. Aquí está la regla:

RewriteRule ^(.*)/$ /$1 [L,R=301

Como puede ver, eso significa que "si la URL actual termina en una barra diagonal, simplemente redirijala a / {url}", y así se deshace de la barra diagonal. Todo está bien, siempre y cuando su instalación se encuentre en la raíz del documento de su servidor.

Puede solucionar esto especificando una RewriteBase (en su caso RewriteBase /laravel/public ) sobre esa regla en su archivo public/.htaccess , pero por supuesto, ahora esto cambiará de un entorno a otro. Esta es la razón por la cual considero que el cambio de la funcionalidad RedirectIftrailingSlash de Laravel 4.0 a ser una regla .htaccess es una mala idea.

Alternativamente, puede eliminar esa RewriteRule completo y tratar de no preocuparse por el hecho de que su aplicación ahora responderá en ambas URL /laravel/public/admin y /laravel/public/admin/ .