Api returns data correctly by artisan serves but not by apache

2

I made a REST api, using Laravel , for an application I am doing, to perform the requisition tests I created a VM where the api is.

Assign a fixed ip to this VM and deactivate the firewall to avoid disturbing.

I configured this way:

In /etc/apache2/sites-enabled/000-default.conf :

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName api.dev
    DocumentRoot /var/www/html/apiTeste/public
</VirtualHost>

<Directory "/var/www/html/apiTeste">
    AllowOverride All
</Directory>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

In /etc/hosts :

127.0.0.1   localhost
127.0.1.1   ouvidoria
127.0.0.1   api.dev

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Testing within the VM itself, if using http://api.dev this returns the Laravel home page, but using http://api.dev/api/unidades this returns a 404 Not Found :

Not Found

The requested URL /api/unidades was not found on this server.

Apache/2.4.25 (Ubuntu) Server at api.dev Port 80

But if you drag the php artisan serve and access http://api.dev:8000/api/unidades it returns the data correctly.

    
asked by anonymous 13.11.2017 / 20:51

1 answer

2

Laravel uses the route concept to get you to access your application.

Verify that apache's mod_rewrite extension is enabled.

<?php
// teste.php
print_r(apache_get_modules());
?>

If you check that the function is not defined, then the extension is not enabled in Apache.

So we'll need to enable the apache module using the a2enmod command. At the terminal type:

sudo a2enmod rewrite

Once this is done, restart your apache:

sudo service apache2 restart
    
13.11.2017 / 21:31