Loading ...

Correggere Errore 404 in Lumen e Apache

Correggere Errore 404 in Lumen e Apache

Lumen è un micro-framewrok basato su Laravel, e io lo sto usando per creare un web service.

Una volta installato e creato un progetto con composer, sono andato in https://www.sito.it/api/public e tutto ha funzionato.

La prima route, infatti, viene creata in automatico.

Ed anche il file .htaccess per Apache dentro alla cartella public:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

Il mio problema è stato quando ho creato una mia route personale nel file routes/web.php:

$router->get('foo', function () {
    return 'CIAO';
});

In pratica:

  • https://www.sito.it/api/public/foo -> Errore 404
  • https://www.sito.it/api/public/index.php/foo -> Ok

Poi ho scoperto che il motivo era la configurazione di Apache.

In pratica dovete modificare il file /etc/apache2/apache2.conf:

<Directory /var/www/>
	Options Indexes FollowSymLinks
	#AllowOverride None
	AllowOverride All
	Require all granted
</Directory>

Il tutto sta nella direttiva AllowOverride.

Se anche cosi non risolvete, assicuratevi di avere il mod_rewrite abilitato (ma è difficile che non lo sia, se non appena installato):

# a2enmod rewrite

In ogni caso, dopo le modifiche, riavviate Apache per essere sicuri:

# systemctl restart apache2

Enjoy!