Lumen простой запрос маршрута не работает

Я установил Lumen на свой веб-сервер, но у меня проблемы с маршрутами

// http://12.345.678.910/
$app->get('/', function() use ($app) {
    return "This works";
});

Но во втором случае он не может найти каталог

// http://12.345.678.910/api
$app->get('/api', function() use ($app) {
    return "This dont work";
});

Во втором случае я получаю стандартную ошибку 404.

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

Я использую Apache, Ubuntu, PHP 5.5 и Lumen


person Ivan Vulović    schedule 28.08.2015    source источник
comment
Вы включили модуль перезаписи URL-адресов Apache?   -  person Bogdan    schedule 29.08.2015
comment
/index.php/api работает? Если это так, значит, переопределение URL-адреса не работает.   -  person BrokenBinary    schedule 29.08.2015


Ответы (3)


Похоже, переопределение вашего URL-адреса не работает. Если вы добавите index.php к URL-адресу прямо перед /api, это сработает?

Например, yourdomain.com/api станет yourdomain.com/index.php/api, и если второй URL работает, перезапись не работает.

Если ваша перезапись не работает, но у вас есть файл .htaccess в вашем public каталоге, вам, вероятно, необходимо разрешить переопределения в вашей конфигурации Apache. Вот пример конфигурации виртуального хоста для Lumen в Ubuntu.

Я пометил линии, которые нужно изменить. Измените первый и третий так, чтобы они указывали на каталог public в каталоге вашего веб-сайта. Затем измените вторую строку на доменное имя, которое вы используете на своем веб-сайте.

<VirtualHost *:80>
    DocumentRoot "/var/www/lumen/public"      # Change this line
    ServerName yourdomain.com                 # Change this line
    <Directory "/var/www/lumen/public">       # Change this line
        AllowOverride All    # This line enables .htaccess files
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Вам необходимо перезапустить Apache, чтобы эти настройки вступили в силу.

Лучший способ

Включение файла .htaccess должно работать, но использование .htaccess несколько замедляет работу вашего сайта. Лучшее решение - поместить содержимое файла .htaccess на виртуальный хост, а затем отключить файлы .htaccess.

Пример конфигурации виртуального хоста для этого выглядит следующим образом:

<VirtualHost *:80>
    DocumentRoot "/var/www/lumen/public"  # Change this line
    ServerName yourdomain.com             # Change this line

    <Directory "/var/www/lumen/public">   # Change this line
        # Ignore the .htaccess file in this directory
        AllowOverride None

        # Make pretty URLs
        <IfModule mod_rewrite.c>
            <IfModule mod_negotiation.c>
                Options -MultiViews
            </IfModule>

            RewriteEngine On

            # Redirect Trailing Slashes...
            RewriteRule ^(.*)/$ /$1 [L,R=301]

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

Еще раз, вам необходимо перезапустить Apache, чтобы эти настройки вступили в силу.

person BrokenBinary    schedule 29.08.2015

В корне вашего приложения создайте .htaccess файл, если его еще нет. Затем вставьте следующий код:

Options +FollowSymLinks
RewriteEngine On

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

Я предполагаю, что вы используете apache сервер и mod_rewrite включен.

Прочтите раздел базовой конфигурации в документации Lumen.

Если вы не знаете, как включить mod_rewrite, этот stackoverflow post может вам помочь.

person Subash    schedule 29.08.2015

Вероятно, файл .htaccess в папке public отсутствует. Проверьте это: https://github.com/laravel/lumen/blob/master/public/.htaccess

person llioor    schedule 29.04.2018