Nueva pregunta

Pregunta:

Fecha: 14-01-2016 08:04:31 (En Español)

¿Cómo quitar el public en Laravel?[No resuelta]

Estoy iniciando en laravel, y no se como puedo quitar el public, he creado un router

Route::get('/prueba', function () {
            echo "eso";
});


y para ejecutar hago esto

http://localhost/blog/public/prueba


pero yo quisiera que sea de esta manera

http://localhost/blog/prueba


saludos
Etiquetas: Framework - Laravel - PHP - Pregunta Votos: 2 - Respuestas: 9 - Vistas: 23 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 14-01-2016 08:55:55 Caro Juan,

    tive este problema recentemente e a solução que encontrei é a que adotei e achei bastante prática. Tanto que estou utilizando a mesma em www.pixelcoletivo.com.br

    O que fiz foi gerar 1 pasta chamada Local e migrei para ela todo o conteúdo que fica fora de "/public"

    E o conteúdo de "/public" migrei para raiz... porém não deletei a pasta "/public", utilizo-a para armazenar componentes do "twitter bootstrap", "jquery" entre outros....

    após esta mudança, fiz as alterações nas configurações no "index.php" que agora fica na raiz e o caminho incluso agora em "/local/bootstrap/app.php", corrigindo as rotas.

    Espero ter ajudado!
      Votos: 2 - Link respuesta
     
  • Fecha: 14-01-2016 09:00:55 Hola

    si usas apache puedes crear un archivo .htaccess y poner este codigo adentro

    
    <IfModule mod_rewrite.c>
    RewriteEngine On
    
    RewriteRule ^(.*)$ public/$1 [L]
    </IfModule>
    
    



    Puedes ver mas respuestas a tu pregunta en el grupo de Laravel Colombia

    https://www.facebook.com/groups/laravelco/
      Votos: 2 - Link respuesta
     
  • Fecha: 14-01-2016 10:11:06 gracias a ambos por responder, acabo de agregar el htaccess

    y ahora me sale esto errror

    Sorry, the page you are looking for could not be found.
    1/1 NotFoundHttpException in RouteCollection.php line 161:
        in RouteCollection.php line 161
        at RouteCollection->match(object(Request)) in Router.php line 802
        at Router->findRoute(object(Request)) in Router.php line 670
        at Router->dispatchToRoute(object(Request)) in Router.php line 654
        at Router->dispatch(object(Request)) in Kernel.php line 246
        at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
        at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
        at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
        at CheckForMaintenanceMode->handle(object(Request), object(Closure))
        at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
        at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
        at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
        at Pipeline->Illuminate\Routing\{closure}(object(Request))
        at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
        at Pipeline->then(object(Closure)) in Kernel.php line 132
        at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
        at Kernel->handle(object(Request)) in index.php line 54


    ojala me puedan ayudar
      Votos: 2 - Link respuesta
     
  • Fecha: 14-01-2016 14:19:25 Juan,

    Ao meu ver, você esta tentando linkar a uma página que não existe. Verifique se as páginas criadas estão dentro da pasta designada para as mesmas, onde o router vai buscar. Elas ficam dentro de Resources > Views....
      Votos: 4 - Link respuesta
     
  • Fecha: 18-01-2016 14:30:20 Haber...
    Primero public debe existir, y la ruta del documentRoot debe estar apuntando a este directorio si no, la aplicación no va a funcionar, lo que debes hacer es crear un dominio virtual que apunte a la ruta de public, obvio con un nombre de dominio..

    Es realmente facil en Linux...
      Votos: 2 - Link respuesta
     
  • Fecha: 19-01-2016 23:43:13 Como faustino (acima) respondeu:
    Você tem que configurar o linux para remover a pasta public da URL.

    Nada de remover itens da pasta public ou então, mexer no htaccess.

    Existe um tutorial ótimo sobre o assunto, vou enviar aqui assim que o encontrar.

    Não sei se é exatamente nesse vídeo, a série tem 5 vídeos. Preste atenção no passo a passo, acredito que voce vai conseguir.

    (Faça isso numa nova instalação do laravel, e depois mova seus arquivos (menos o htaccess modificado, etc)

    Criar Virtual Host Para Desenvolvimento Web





      Votos: 2 - Link respuesta
     
  • Fecha: 20-01-2016 09:44:48 REMOVER SEGMENTO ‘/PUBLIC’ DE LA URL EN LARAVEL
    Cuando se empieza con un proyecto en Laravel por defecto el segmento ‘public’ de la URL es visible. A nivel de desarrollo puede que no moleste mucho – en mi caso sí me molesta -, pero cuando ya queremos montar nuestra aplicación y lanzarla al mundo obviamente no queremos ‘public’ esté ahí.

    En primera instancia tenemos que entender que contiene el directorio ‘public‘ de Laravel. Como bien dice su nombre, contiene todo lo público de la aplicación – al que el navegador tendrá acceso -: hojas de estilo, javascript, imágenes, fuentes, favicon. En resumidas cuentas son los conocidos assets. Pero dentro de este directorio también deben ir los archivos: robots.txt, humans.txt, mapas del sitio y archivos públicos de descarga. Finalmente se encuentra el archivo index.php el que se encarga de arrancar el framwork.

    A continuación voy a explicar dos formas de poder ocultar el segmento ‘/public’ de la URL. Pueden ser utilizadas tanto a nivel local como en producción.

    CREANDO UN LINK SIMBÓLICO

    Esta es la opción más recomendada debido a que es la más simple, sin tener que tocar código alguno. Al mismo tiempo, entrega seguridad – y es la que la comunidad recomienda – debido a que oculta del acceso público los archivos propios del framwork y sólo deja la carpeta ‘public’ como accesible.

    Lo que vamos a hacer es tener nuestra carpeta de Laravel fuera de alcance público y vamos a crear un link a la carpeta pública /public. Por ejemplo, vamos a tener el framework en /algun/lugar/del/disco/laravel y vamos a crear un link simbólico para que al momento de acceder desde el navegador, el servidor obtenga los datos desde /algun/lugar/del/disco/laravel/public.

    Descarguen e instalen Laravel fuera del directorio web público – fuera de public_html, www o htdocs -. Puede ser en cualquier lugar, pero yo recomiendo utilizar un nivel más arriba del directorio web público.
    El siguiente paso es crear el link simbólico.

    Windows
    Vamos a suponer que trabajan con XAMPP y que tienen instalado Laravel en C:\xampp\framework-laravel.
    Abran una consola como Administrador – importante -.
    Vayan al directorio web público:
    1
    cd C:\xampp\htdocs
    Luego escriban el siguiente comando:
    1
    mklink /d laravel C:\xampp\framework-laravel\public
    Linux
    Vamos a suponer que trabajan con LAMPP y que tienen instalado Laravel en /opt/lampp/framework-laravel. En la consola deben escribir:
    1
    ln -s /opt/lampp/framework-laravel/public /opt/lampp/htdocs/laravel



    Ahora ya podemos acceder a http://localhost/laravel. Ahora esa ruta hace referencia a la carpeta ‘public’ de Laravel. El nombre que le dimos al link es laravel – justo despues de /d en Windows y la última ruta en Linux – pero pueden ocupar el que ustedes deseen, como el nombre del proyecto en el cual trabajan.Para remover el link sólo deben remover el archivo creado que se encuentra en la carpeta web pública.
    OCULTANDO EL FRAMEWORK Y DEJANDO /PUBLIC SEPARADO

    Al igual que la opción anterior, también ocultaremos el framework del acceso publico, pero dejaremos la carpeta ‘public‘ en la carpeta web pública – public_html, www o htdocs – y lo ‘feo’ de todo esto, es que hay que meter un poco de mano al código, veamos:

    Descarguen e instalen Laravel fuera del directorio web público – fuera de public_html, www o htdocs -. Puede ser en cualquier lugar, pero yo recomiendo utilizar un nivel más arriba del directorio web público. En este ejemplo quedará así nombrando la carpeta como laravel-framework:

    cgi-bin/
    error_log/
    public_html/
        ...
    laravel-framework/
        app/
        bootstrap/
        vendor/
        artisan
        server.php
        ...
    otra_carpeta/
    otra_mas/
    ...


    Creen una carpeta con el nombre de su proyecto en la carpeta web pública. En este caso utilizaremos el nombre mi-proyecto:

    cgi-bin/
    error_log/
    public_html/
        mi-proyecto/
           ...
        ...
    laravel-framework/
    otra/
    otra_mas/
    ...


    El contenido ‘public‘ del framework debe ir en la carpeta mi-proyecto que creamos.
    Una vez copiado el contenido, deben abrir y editar el archivo index.php.
    Deben encontrar las siguientes líneas:


    require __DIR__.'/../bootstrap/autoload.php';
    
    $app = require_once __DIR__.'/../bootstrap/start.php';


    Esas rutas hacen referencia a la carpeta boostrap de Laravel, por lo cual debemos modificarlas para que index.php pueda arrancar el framework. Como pusimos el framework dentro de la carpeta laravel-framework, las rutas deben quedar de esta manera:

    require __DIR__.'/../../laravel-framework/bootstrap/autoload.php';
    
    $app = require_once __DIR__.'/../../laravel-framework/bootstrap/start.php';


    Ahora tienen que ir a archivo paths.php ubicado en laravel-framework/boostrap y editar el path de public, quedando así:

    // El valor de la carpeta puede tomar tanto como public_html, www, htdocs o cualquier otro nombre dependiendo del servidor
    'public' => __DIR__.'/../../public_html/mi-proyecto',


    Ahora ya podemos acceder a http://localhost/laravel.
    Esta opción es recomendada para hosting compartidos en los cuales por ejemplo no tienen acceso SSH como para crear un link simbólico. Lo bueno es que aún así ocultan el framework del acceso público – fuera de la carpeta web pública – y sólo dejan a la vista sólo lo que debe estar.

    Si llegan a utilizar packages que generen archivos en el directorio ‘public‘ del framework, se van a generar en la carpeta laravel-framework creando una nueva carpeta ‘public‘ con los archivos generados – no lo he probado pero así debería funcionar -. Si desean cambiar la ruta en donde se generan esos archivos, hay que cambiar el valor de public en el archivo boostrap/paths.php.

    LO NO RECOMENDADO

    Existe una tercera opción que no voy a detallar, pero consiste en juntar el directorio ‘public’ con la raíz de Laravel, de esa manera el directorio desparece y en su defecto la URL también. No lo detallo ya que es un método sucio y poco seguro, estaríamos dejando al acceso publico los archivos del framework y no es lo recomendado.

    //Nombro la fuente del post:
    Este post lo realizó: nikoskip de fuubar.

    espero que te sirva un saludo!!
      Votos: 2 - Link respuesta
     
  • Fecha: 21-01-2016 02:15:37 Hola, debes crear un virtual host, y accedes a tu proyecto desde esa dirección   Votos: 2 - Link respuesta
     
  • Fecha: 27-01-2016 05:35:25 es mas facil a mi parecer hacerlo mediante htaccess, simplemente montarias el proyecto tal cual lo tienes conecta tu bd y listo configura el htaccess con eso te ahoras problemas y posibles errores   Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com