Como Redirecionar Laravel no Apache SEM ALTERAR URL

Na URL não apacererá 'seusite.com/seuprojeto/public' e sim somente: 'seusite.com'


Como Redirecionar Laravel no Apache SEM ALTERAR URL


O Laravel tem sido usado com frequência por desenvolvedores web e muitos estão fazendo deploy em servidores de hospedagens com planos comuns onde só há o Apache disponível de forma simples.

Muitas vezes você está fazendo uma versão de desenvolvimento e não quer remover os arquivos da raiz do seu projeto e substituir pela versão beta, entre diversos outros motivos.

Nesse artigo veremos como usar o Laravel no Apache bem como usá-lo, caso queira, na raiz do seu projeto mesmo estando em uma subpasta no servidor.

Nós vimos aqui Como Instalar Composer e Laravel no Windows e Ubuntu.

Então, para acessar o Laravel no seu navegador, você pode usar o comando:

php artisan serve

Dentro de um projeto Laravel.

Para acessar direto no Apache siga os passos seguintes…


Acessando Laravel no Apache

Primeiramente vamos ver como acessar o Laravel no Apache sem precisar do: ~php artisan serve~.

1. Mova seu projeto Laravel para seu servidor:

mv meuprojeto /var/www/html

Ou também, dependendo do seu sistema: mv meuprojeto /var/www/localhost/htdocs, ou qualquer outro caso.

2. Crie um arquivo de configuração para a porta 80

sudo vim /etc/apache2/sites-available/laravel.conf

Alguns sistemas pode ter o caminho diferente, no meu caso mesmo(Gentoo) é: sudo vim /etc/apache2/vhosts.d/laravel.conf.

E insira o conteúdo abaixo:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /var/www/localhost/htdocs/meuprojeto/public

    <Directory /var/www/localhost/htdocs/meuprojeto/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/log/apache2/laravel_error.log
    CustomLog /var/log/apache2/laravel_access.log combined
</VirtualHost>

3. Atribua todas as possíveis permissões para acessar e editar os arquivos

sudo chown -R apache:apache /var/www/html/meuprojeto
sudo chown -R apache:apache /var/log/apache2
sudo chmod -R 775 /var/www/html/meuprojeto/storage/
sudo chmod -R 775 /var/www/html/meuprojeto/bootstrap/cache/
sudo usermod -a -G apache $USER
sudo find /var/www/html/meuprojeto -type f -exec chmod 664 {} \;
sudo find /var/www/html/meuprojeto -type f -exec chmod 775 {} \;
sudo chmod -R gu+w /var/www/html/meuprojeto

4. Reinicie o Apache e acesse no navegador

# Em alguns casos que há o comando a2enmod, rode também:
sudo a2enmod rewrite
sudo systemctl restart apache2 

Use a forma de reiniciar o Apache de acordo com o seu sistema. No meu mesmo é: sudo rc-service apache restart, no Windows é dessa forma.

Agora, acesso no navegador o endereço correspondente ao seu projeto, mas para a pasta public:

http://localhost/meuprojeto/public

E note que seu projeto já está rodando direto no Apache!


Redirecionamento ALTERANDO a URL

Pode ser que você ainda queira acessar o projeto, mas identificar no URL que foi redirecionado.

Para esse caso, crie um arquivo de nome: .htaccess na raiz do seu servidor, exemplo:

vim /var/www/html/.htaccess

E cole o conteúdo abaixo, substitua o nome meuprojeto para o nome do seu projeto:

RewriteEngine On

# Redireciona http://localhost para http://localhost/meuprojeto/public/
RewriteCond %{HTTP_HOST} ^(localhost)$ [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /meuprojeto/public/$1 [L,R=301]

Há casos que talvez você precise reiniciar mais uma vez o Apache e outros casos até limpar o cache do seu navegador:

sudo systemctl restart apache2 

# Por exemplo limpar o cache do Google Chrome no Ubuntu
rm -rf ~/.cache/google-chrome

Agora teste acessando: http://localhost e será redirecionado para http://localhost/meuprojeto/public


Redirecionamento SEM ALTERAR a URL

Talvez essa seja a parte mais interessante desse artigo, ou seja, algo que você não encontrará na documentação do Laravel! 😃

Se você quer acessar o projeto, redirecionar para meuprojeto/public, mas sem alterar a URL, substitua o conteúdo do .htaccess por esse conteúdo:

ALtere meuprojeto para o nome do seu projeto. vim /var/www/html/.htaccess

RewriteEngine On

# Reescreve internamente http://localhost para http://localhost/meuprojeto/public/
RewriteCond %{HTTP_HOST} ^localhost$ [NC,OR]
RewriteCond %{HTTP_HOST} ^localhost$
RewriteCond %{REQUEST_URI} !meuprojeto/public/
RewriteRule (.*) /meuprojeto/public/$1 [L]

Espero que eu tenha ajudado, se no seu caso tiver algum problema revise os passos.

E não se esqueça de compartilhar esse artigo!


laravel apache php desenvolvimentoweb


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!