Ошибка 404 при вызове api в laravel 6.4 с виртуальным хостом apache2 - PullRequest
0 голосов
/ 04 ноября 2019

У меня установлен Laravel 6.4 на Ubuntu 18.04 с php 7.2 и apache2. Я создал пример для разработки API, и когда я выполняю команду php artisan serve и использую почтальон , чтобы выполнить запрос, все работает нормально. Но если я создаю виртуальный хост, я могу видеть сайт без проблем, однако при выполнении запроса через почтальона я получаю ошибку 404. Файл .htaccess по умолчанию содержит laravel:

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

RewriteEngine On

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

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

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

, а мой виртуальный хост выглядит следующим образом:

<VirtualHost test-api.local:80>
    ServerName test-api.local

    DocumentRoot /var/www/html/restlav/public
    DirectoryIndex index.php

    ErrorLog ${APACHE_LOG_DIR}/test-api.local-error.log
    CustomLog ${APACHE_LOG_DIR}/test-api.local-access.log combined

    <Directory "/var/www/html/restlav">
            Options +FollowSymLinks
            RewriteEngine On
            AllowOverride None
            Require all granted
    </Directory>
</VirtualHost>

Я уже пытался внести изменения, предложенные вофициальная документация и ничего. Модуль перезаписи включен. Если кто-нибудь может мне помочь, я заранее благодарен.

1 Ответ

0 голосов
/ 13 ноября 2019

В разделе необходимо установить для параметра AllowOverride значение All:

<VirtualHost test-api.local:80>
    ServerName test-api.local

    DocumentRoot /var/www/html/restlav/public
    DirectoryIndex index.php

    ErrorLog ${APACHE_LOG_DIR}/test-api.local-error.log
    CustomLog ${APACHE_LOG_DIR}/test-api.local-access.log combined

    <Directory "/var/www/html/restlav">
            Options +FollowSymLinks
            RewriteEngine On
            AllowOverride All
            Require all granted
    </Directory>
</VirtualHost>

Также убедитесь, что модуль перезаписи на сервере Apache включен:

$ sudo a2enmod rewrite

And donне забудьте перезапустить сервер apache, чтобы изменения вступили в силу:

$ sudo systemctl restart apache2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...