Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao subir aplicação para o servidor remoto com o index.php na pasta public.

Bom dia, após estruturar o projeto conforme demonstrado na Aula 3 - Ponto Único de entrada, tópico 6 - Pasta Public e subir a aplicação para um servidor web (runhosting), tive problemas ao tentar realizar as ações de criar novo vídeo, ditar, etc. Apenas a página inicial é apresentada com os vídeos já cadastrados previamente. A aplicação roda perfeitamente no servidor embutido do PHP rodando o comando php -S localhost:8080 -t public/

Para subir a aplicação, apenas copiei as pastas para o servidor.

Ao tentar clicar em algum link, como por exemplo "Editar" é apresentada a mensagem abaixo.

Not Found The requested URL was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Fiz algumas pesquisas sobre a configuração de um arquivo .htacess do servidor, porém ainda não tive êxito.

1 resposta
solução!

Problema resolvido em dois passos:

Passo 1: Variável global $_SERVER['PATH_INFO'] não disponível no servidor remoto. O index.php do projeto faz referência à chave PATH_INFO que não estava disponível no servidor remoto, assim, todas as requisições caiam na condição de exceção e encaminhada o usuário para a página inicial. Para resolver, foi utilizada a chave $_SERVER['REQUEST_URI'].

Passo 2: Criação do arquivo .htaccess Esses arquivos devem ser criados na pasta raiz do servidor e na pasta "public".

.htaccess da pasta raiz

# Ativação do RewriteEngine que nos permite gerenciar as rotas
RewriteEngine On

# Definição da rota principal
RewriteBase /

# Se o diretório ou arquivos digitados na URL não existirem, seguir a RewriteRule
RewriteCond %{REQUEST_FILENAME} !-d       
RewriteCond %{REQUEST_FILENAME} !-f

# Rewrite Rule, redirecionar todas as requests para o index.php 
# RewriteRule ^(.+)$ index.php [QSA,L]
RewriteRule ^(.*)$ /public/index.html [L]

.htaccess da pasta public

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [NC,L]


#uncoment this line on server
RewriteCond %{HTTPS}  !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Options -Indexes