Sei que essa é uma pergunta muito popular, mas não consegui encontrar uma solução funcional para o Laravel 5. Venho tentando migrar do Codeigniter há muito tempo, mas esse processo de instalação complicado me deixa adiado.
Não quero executar uma VM, isso parece estranho ao alternar entre projetos.
Eu não quero definir a raiz do meu documento para a pasta pública, isso também é estranho ao alternar entre projetos.
Eu tentei o método .htaccess mod_rewrite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Isso me fornece uma NotFoundHttpException do Laravel na linha compiled.php 7610.
Quando tentei o L4 há algum tempo, usei o método de mover o conteúdo da pasta pública para a raiz. A estrutura do L5 é bem diferente e, seguindo os mesmos passos, o Laravel foi completamente quebrado (o servidor retornaria apenas uma página em branco).
Existe um método decente de remover 'público' em um ambiente de desenvolvimento que:
- Funciona com L5
- Permite alternar entre projetos com facilidade (geralmente trabalho em 2 ou 3 a qualquer momento).
obrigado
** Estou usando MAMP e PHP 5.6.2
Respostas:
Para o Laravel 5:
server.php
na pasta raiz do Laravel paraindex.php
.htaccess
arquivo do/public
diretório para a pasta raiz do Laravel.É isso aí!
fonte
.env
arquivo se você está fazendo isso a menos que você está ok com as pessoas vendo sua senha de banco de dados em texto claro;)<Files "log.txt">Order Allow,DenyDeny from all</Files>
resolve o problema que você solucionou. É seguro agora ou tem mais riscos?log.txt
. Apenas certifique-se de bloquear dados confidenciais do público. Se você usa o Laravel e lê a documentação cuidadosamente , sua raiz da web será parecidaproject/public
. Dê uma olhada nesta discussão sobre stackoverflow . Configure seu servidor da web e tentehttps://example.com/.env
por precaução. Se você vir suas senhas, considere tudo comprometido e altere todas as senhas.Resolvi o problema usando 2 respostas:
Alterando .htaccess um pouco da seguinte maneira para estática:
Se houver outros arquivos estáticos necessários, adicione a extensão à lista declarada anterior
fonte
RewriteRule ^.env - [F,L,NC]
<Files ~ "\.env$"> Order allow,deny Deny from all </Files>
No Laravel 5.5, crie o arquivo .htacess no diretório raiz e coloque o seguinte código: - Link de referência
fonte
RewriteRule ^ ^$1 [N
] faz?NÃO!
VOCÊ REALMENTE NÃO DEVE renomear
server.php
na pasta raiz do Laravelindex.php
e copiar o.htaccess
arquivo do/public
diretório para a pasta raiz do Laravel !!!Dessa forma, todos podem acessar alguns de seus arquivos (
.env
por exemplo). Tente você mesmo. Você não quer isso!FAZ
Em vez disso, você deve criar um
.htaccess
arquivo na sua raiz assim:Isso reescreverá silenciosamente todos os seus URIs de base na
/public
pasta. Mesmo todos os cabeçalhos , por exemplo, o cabeçalho de autorização HTTP e todos os parâmetros opcionais de URI também serão silenciosamente transmitidos para a/public
pasta.Isso é tudo
Observe ao configurar um projeto Laravel com o Docker: você não precisará fazer isso.
fonte
Maneira fácil de remover o público do laravel 5 url. Você só precisa cortar index.php e .htaccess do diretório público e colá-lo no diretório raiz, isso é tudo e substituir duas linhas no index.php como
Nota : O método acima é apenas para iniciantes, pois eles podem estar enfrentando problemas na configuração do host virtual e A melhor solução é configurar o host virtual na máquina local e apontá-lo para o diretório público do projeto.
fonte
@ rimon.ekjon disse:
Isso está funcionando para mim. Mas todos os arquivos de recursos no diretório / public não conseguiram encontrar e os URLs de solicitação não funcionaram, porque usei o auxiliar asset ()
Alterei a função /Illuminate/Foundation/helpers.php/asset () da seguinte maneira:
Agora tudo funciona :)
Obrigado @ rimon.ekjon e todos vocês.
fonte
RewriteRule ^(.*)$ public/$1 [L]
no seu arquivo .htaccess que você copiou do diretório público removendo esta linhaRewriteRule ^(.*)/$ /$1 [L,R=301]
Basta criar o arquivo .htaccess na raiz e adicionar essas linhas a ele
É isso aí!
O código acima funciona na pasta raiz public_html. Dito isto, seu arquivo laravel principal deve estar dentro da pasta public_html, se o diretório parecer public_html / laravelapp / public e se você colocar o código acima dentro de laravelapp, ele não funcionará. Portanto, você deve copiar todos os seus arquivos principais em public_html e colocar o arquivo .htaccess lá.
Se você deseja manter o código em um subdiretório, é possível criar um subdomínio, pois esse código também funcionará para isso.
fonte
Crie um
.htaccess
arquivo no diretório raiz e coloque o código como abaixo.fonte
1) Não encontrei um método de trabalho para mover o diretório público em L5 . Embora você possa modificar algumas coisas no bootstrap
index.php
, parece que várias funções auxiliares se baseiam na suposição de que o diretório público esteja lá. Honestamente, você realmente não deveria estar movendo o diretório público.2) Se você estiver usando o MAMP , deverá criar novos vhosts para cada projeto, cada um servindo o diretório público do projeto. Depois de criado, você acessa cada projeto pelo nome do servidor definido, assim:
fonte
É possível remover o URL público no laravel5. Siga esses passos:
copie todos os arquivos do público e cole no diretório raiz
o
index.php
arquivo da etapa 2.open substitua porpara
e
para
E remova todo o cache e cookies.
fonte
Digamos que você colocou todos os outros arquivos e diretórios em uma pasta chamada 'locale'.
Vá para index.php e encontre estas duas linhas:
e altere-os para isso:
fonte
Aqui está a melhor e mais curta solução que funciona para mim a partir de maio de 2018 para o Laravel 5.5
basta cortar seu
.htaccess
arquivo do diretório / public para o diretório raiz e substituí-lo pelo conteúdo a seguir:Apenas salve o
.htaccess
arquivo e isso é tudo.Renomeie seu
server.php
arquivo paraindex.php
. isso é tudo divirta-se!fonte
MELHOR Abordagem: não recomendarei remover o público,
on local computer create a virtual host point to public directory
e simon remote hosting change public to public_html and point your domain to this directory
. Razão, todo o seu código de laravel será seguro porque está no seu diretório público :)MÉTODO 1:
Eu só mudar o nome
server.php
paraindex.php
e ele funcionaMÉTODO 2:
Este trabalho bem para toda a versão laravel ...
Aqui está minha estrutura de diretório,
Siga estas etapas fáceis
para
e
para
para
e é isso, agora tente http: // localhost / laravel /
fonte
4 melhores maneiras de remover o público do URL.
Se você usou outro truque para remover o público da URL, altere o nome de server.php para index.php e altere o caminho do arquivo principal. Claramente, não faça isso. Então, por que o Laravel não está dando a solução dessa maneira, porque não é uma maneira adequada de fazer isso?
Ao adicionar um arquivo .htaccess à raiz, você pode acessar o site sem necessidade de
Estou dando uma demonstração aqui para o sistema operacional Windows. Mas tentarei definir um passo para que qualquer um possa segui-lo facilmente. Você também pode pesquisar no google o mesmo para o sistema operacional específico.
Etapa 1: Vá para C: \ Windows \ system32 \ drivers \ etc \ abra o arquivo "hosts" no modo Administrador.
Etapa 2: adicione o seguinte código a ele. Aqui, estou fornecendo uma demonstração do nome do domínio project.local, você pode especificar o que quiser. Apenas faça constante em todos os lugares.
Etapa 3: Agora vá para,
C:\xampp\apache\conf\extra
para usuários do xampp e para o usuário do wamp"C:\wamp\bin\apache\Apache2.4.4\conf\extra"
e abra o"httpd-vhosts.conf"
arquivo. Agora adicione o seguinte código nele.Notas: Altere a raiz do documento conforme seu projeto e adicione o nome de domínio conforme definido no arquivo "hosts".
Etapa 4: Por último, mas a etapa importante é reiniciar o seu Xampp ou Wamp e acessar o URL como se fosse o
http://projectname.local
seu Laravel responderá sem URL público.Se você trabalha no local, não precisa fazer nada, basta executar o seguinte comando no terminal ou na ferramenta de linha de comando. Depois disso, você pode acessar o site pela URL fornecida pela linha de comando.
Se você estiver disposto a executar seu projeto em um IP específico, precisará executar o seguinte comando. Se você estiver trabalhando na LAN, se quiser permitir que outras pessoas acessem seu site localmente, basta verificar seu endereço IP usando a linha de comando executando "ipconfig" depois de obter seu endereço IP seguindo o comando.
Se você estiver disposto a executar seu projeto em um IP específico com uma porta específica, precisará do seguinte comando.
Após a conclusão do projeto, você precisa hospedá-lo no servidor, basta definir a raiz do documento no seu domínio para a pasta pública. Verifique a captura de tela abaixo.
Conforme a captura de tela, se você não tiver nenhuma pasta de projeto no public_html, basta definir a raiz do seu documento
"public_html/public"
.Referência retirada daqui
fonte
Gostaria de adicionar ao @Humble Learner e observar que o local adequado para "corrigir" o caminho da URL dos ativos é /Illuminate/Routing/UrlGenerator.php/asset ().
Atualize o método para corresponder:
Isso corrigirá scripts, estilos e caminhos de imagem. Qualquer coisa para caminhos de ativos.
fonte
Para que o usuário do XAMPP remova o público da url sem tocar no sistema de arquivos padrão do laravel, configure um host virtual para o seu aplicativo fazer isso, apenas siga estas etapas
Abra o aplicativo do painel de controle XAMPP e pare o Apache. Esteja ciente de que máquinas Windows atrasadas podem executá-lo como um serviço; portanto, marque a caixa à esquerda do módulo Apache.
Navegue para
C:/xampp/apache/conf/extra
ou onde seus arquivos XAMPP estiverem localizados.Abra o arquivo chamado httpd-vhosts.conf com um editor de texto.
Na linha 19, encontre #
NameVirtualHost *:80
e remova o comentário ou remova o hash.Na parte inferior do arquivo, cole o seguinte código:
C:/Windows/System32/drivers/etc/hosts
, onde hosts é o arquivo. Abra-o com o bloco de notas.127.0.0.1 localhost
A resolução de nomes de host local é tratada no próprio DNS.
O artigo original pode ser encontrado aqui
fonte
Sempre há um motivo para ter uma pasta pública na configuração do Laravel, todos os materiais relacionados ao público devem estar presentes dentro da pasta pública,
Basta escrever a condição de reescrita no
.htaccess
arquivo e instalar o módulo de reescrita e ativar o módulo de reescrita, o problema que adiciona público à rota será resolvido.fonte
Eu sei que existem muitas soluções para esse problema. A melhor e mais fácil solução é adicionar o arquivo .htaccess no diretório raiz .
Tentei as respostas que fornecemos para esse problema, mas enfrentei alguns problemas com o auth: api guard no Laravel.
Aqui está a solução atualizada:
Crie o arquivo .htaccess no diretório raiz e adicione esse código. E tudo dá certo
fonte
Laravel 5.5
Depois de instalar o Laravel pela primeira vez, enfrentei o renomado "problema de pasta pública" e encontrei esta solução que, na minha opinião pessoal , é "mais limpa" que as outras que encontrei na Web.
Conquistas
public
palavra no URI.env
arquivo contra pessoas curiosasTudo pode ser feito apenas editando o
.htaccess
usomod_rewrite
e quatro regras simples.Passos
.htaccess
arquivo parapublic/.htaccess
dentro da raiz principalComentei tudo, por isso deve ficar claro (espero) também para aqueles que nunca usaram
mod_rewrite
(não que eu seja um especialista, pelo contrário). Além disso, para entender as regras, deve ficar claro que, no Laravel, se Bill se conectarhttps://example.com
,https://example.com/index.php
está carregado. Este arquivo contém apenas o comandoheader("refresh: 5; https://example.com/public/")
, que envia a solicitação parahttps://example.com/public/index.php
. Este segundoindex.php
é responsável por carregar o controlador e outras coisas.A regra a seguir (originalmente em
public/.htaccess
) pode ser excluída. A mesma regra, de fato, é explicada de maneira mais detalhada nas duas últimas regras.EDIT: eu perdi Abhinav Saraswat solução 's e sua resposta deve ser o único aceito. Apenas uma regra simples e clara que redireciona todo o tráfego para a pasta pública sem modificar nenhum arquivo.
fonte
Em primeiro lugar você pode usar estas etapas
fonte: https://stackoverflow.com/a/28735930
Depois de seguir estas etapas, você precisará alterar todo o caminho css e script, mas isso será cansativo.
Proposta de solução : basta fazer pequenas alterações na
helpers::asset
função.Para isso :
abrir
vendor\laravel\framework\src\Illuminate\Foundation\helpers.php
ir para a linha 130
escreva em
"public/".$path
vez de$path
,fonte
Ative o módulo mod_rewrite com
e reinicie o apache
Para usar mod_rewrite nos arquivos .htaccess (que é um caso de uso muito comum), edite o VirtualHost padrão com
Abaixo de "DocumentRoot / var / www / html", adicione as seguintes linhas:
Reinicie o servidor novamente:
fonte
Eu li alguns artigos antes e está funcionando bem, mas realmente não sei se é seguro ou não
Edite o index.php
para
fonte
Mesmo que eu não recomende colocar o Laravel na pasta raiz, há alguns casos em que não pode ser evitado; nesses casos, os métodos acima não funcionam para ativos, por isso fiz uma correção rápida alterando o htaccess: depois de copiar server.php para index.php, edite o arquivo .htaccess da seguinte maneira:
Esta foi uma solução rápida que eu tive que fazer para que todos sejam bem-vindos para atualizá-la.
fonte
O problema é que se você digitar / public e ele ainda estará disponível no URL, criei uma correção que deve ser colocada no public / index.php
essa paz de código removerá o público do URL e fornecerá um 404 e depois redirecionará para o URL sem o público
fonte
Outro método que eu uso é criar um link simbólico (no Linux, não sei sobre o Win) usando o comando ln em htdocs ou www, ou seja,
ln projectname/public project
o site é acessível por meio de host / projeto localfonte
Você pode remover a palavra-chave pública do URL usando vários métodos.
1) Se você estiver usando hospedagem dedicada e tiver acesso root, poderá remover a palavra-chave pública da url usando o Host Virtual. Você deve fornecer o caminho do DocumentRoot com public. Portanto, isso iniciará o índice do diretório público e o removerá do URL.
2) Se você não tem acesso root da sua hospedagem, você deve gerar um novo arquivo .htaccess no diretório raiz e colocar o código como abaixo
Você pode obter mais referência aqui.
fonte
Crie o arquivo .htaccess no diretório raiz e coloque o código como abaixo.
Crie o arquivo .htaccess no diretório / public e coloque o código como abaixo.
fonte
Encontrei a solução mais funcional para esse problema.
Basta editar o seu
.htaccess
na pasta raiz e escrever o código a seguir. Nada mais é necessáriofonte
Eu tentei alguma solução aqui e encontrei htaccess que funciona para o laravel 5.2, como este:
quando você tiver outro arquivo ou pasta proibido, basta adicionar
fonte
Você não precisa fazer muito, basta criar um arquivo .htaccess no diretório raiz e colar / salvar o abaixo;
fonte