O que há de errado na implantação deste aplicativo Laravel? Preciso de um domínio efetivo, em vez disso, o vhost usado no meu ambiente local?

Eu sou muito novo no PHP e, além disso, em Laravel e estou muito desesperado tentando implantar um aplicativo Laravel 5.4 que funciona bem no meu ambiente local no meu servidor remoto Linux.

Então eu acho que é algo relacionado à configuração do host virtual ou algo assim (talvez também algo relacionado ao arquivo .htaccess )

No meu ambiente local (estou usando o XAMPP no Windows), configurei esse host virtual no arquivo C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf :

 DocumentRoot "C:/xampp/htdocs/HotelRegistration/public" ServerName laravel.dev  

Então, abrindo o URL laravel.dev, obto a página inicial do Laravel (ainda não o substituí com uma página de destino).

Então, se abrir este URL: http://laravel.dev/registration

Eu obtenho a página de registro de usuário desenvolvida por mim, porque eu tenho essa rota em meu arquivo web.php no meu projeto:

 Route::resource('/registration', 'RegistrationController'); 

Em seguida, no meu RegistrationController.php , este método mostra a exibição resources / views / registration / index.blade.php

 public function index(){ return view('/registration/index'); } 

Tudo funciona bem.

Agora eu coloquei este site Laravel no meu servidor Linux remoto, nesta pasta: / var / www / html / Registro de hotel

Mas agora meu problema é que neste ambiente remoto eu não tenho host virtual (me corrija se estou fazendo uma afirmação errada: do que entendi, o host virtual é usado no ambiente local para simular um domínio que Laravel precisa apontar para o pasta pública , é este o raciocínio correto?)

De qualquer forma, este é o URL da pasta pública do meu site implantado no meu servidor remoto:

http://89.36.211.48/HotelRegistration/public/

Como você pode ver a abertura, a página de destino da Laravel está corretamente mostrada, o problema é que eu posso acessar a página de registro anterior, a única maneira que eu encontrei é abrir esta URL:

http://89.36.211.48/HotelRegistration/public/index.php/registration

mas é bastante horrível e, acima de tudo, quando o formulário de inscrição é enviado, é gerado um pedido POST para este URL http://89.36.211.48/registration que termina em um erro 404 Not Found .

Então eu acho que depende do fato de que neste servidor remoto não consigo usar um host virtual que simule um domínio (como eu tenho no meu ambiente local), mas não tenho certeza sobre isso.

O que posso fazer para resolver a situação? Você acha que usando um domínio efetivo (algo como: www.myregistration.com) que aponta para este diretório do meu servidor remoto http://89.36.211.48/HotelRegistration/public/ Eu posso resolver esse problema?

Você precisa configurar seu domínio em seu servidor e precisa reconfigurar o apache. Estou pensando que você está tendo servidor apache2, então aqui você pode fazer:

Passo 1 Vá para a pasta apache2 cd / etc / apache2

Passo 2 Você pode ver a pasta disponível nos sites dentro dos sites de cd disponíveis

Passo 3 Faça um novo nome de arquivo laravel.dev.conf

Passo 4 Anote o seguinte sudo nano laravel.dev.conf

Passo 5 Anote a seguinte opção:

  ServerAdmin webmaster@laravel.dev ServerName laravel.dev ServerAlias www.laravel.dev DocumentRoot /var/www/html/laravel.dev/public/ ErrorLog /var/www/html/laravel.dev/logs/error.log CustomLog /var/www/html/laravel.dev/logs/access.log combined  Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny Allow from all Require all granted   

Passo 6 Agora vá para esta pasta / crie um novo cd /var/www/html/laravel.dev

Etapa 7 Copie / Instale seu aplicativo laravel aqui.

Passo 8 Agora você pode habilitar seu site digitando sudo a2ensite laravel.dev.conf

Passo 9 Agora reinicie o apache2 sudo service apache2 reinicie

Agora você pode ter access adequado ao seu domínio. Espero que isto ajude.

Como você está usando XAMPP

Adicione o seguinte à sua Diretiva VirtualHost :

  AllowOverride All  

A sua Diretiva VirtualHost final deve ser:

  DocumentRoot "LINUX PATH TO /HotelRegistration/public" ServerName 89.36.211.48  AllowOverride All   

Após as alterações de configuração, reinicie o Apache, então você está pronto para ir.