У меня есть этот код с использованием slim framework и php с apache2 на linux:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../../vendor/autoload.php';
$app = new \Slim\App;
#doesn't work results in URl not found in browser
$app->get('/hello','sayhi');
#works, when i just type in 'localhost/' into my webbrowser
$app->get('/',function()
{
return 'testing';
});
$app->run();
#functions
function sayhi()
{
echo 'hello world again';
}
.htaccess (тот же каталог, что и мой файл index.php)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
000-default.conf имеет documentroot для каталога, где мой php-файл и файл .htaccess.
Когда я набираю 'localhost /' в моем веб-браузереанонимная функция выполняется. Это то, что он будет делать, если сервер получит '/'
Однако, когда я набираю 'localhost / hello', это приводит к тому, что URL не найден, когда он должен выполнить функцию 'sayhi', когда сервер получает этоТип URL.
Почему он это делает? что-то не так в моем коде, так как я не понимаю, как это сделать.
Я также попытался установить опцию для каталога моего php-файла
AllowOverrideВсе
Однако это приводит к внутренней ошибке 500, когда у меня установлена эта опция. Я пытался следовать этому руководству: 500 внутренняя ошибка руководство безрезультатно.
Я не знаю, как это отсортировать, помогите?