У меня очень простое приложение Slim, которое отлично работает на моем компьютере с Ubuntu, но я получаю ошибку 500 при развертывании его в общей учетной записи Hostgator с использованием субдомена.
Я подозреваю, что проблема заключается в моем файле .htaccess.
Структура моих файлов:
project/
├──api/
│ ├── .htaccess
│ ├── services.php
├──src/
├──vendor/
Приложение My Slim (services.php):
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require_once '../src/vendor/autoload.php';
$c = new \Slim\Container();
$c['notFoundHandler'] = function ($c) {
return function ($request, $response) use ($c) {
return $c['response']
->withStatus(404)
->withHeader('Content-Type', 'text/html')
->write('Invalid endpoint');
};
};
$app = new \Slim\App($c);
$app->post('/myEndpoint', function (Request $request, Response $response, array $args) {
if($request->getHeader("key") != null && $request->getHeader("key")[0] == "123456789="){
$reqdata = $request->getParsedBody();
$data = $reqdata['data'];
return json_encode('{"data":'.$data.',"response":"OK","errorcode":"0"}');
} else {
return '{"data":"","response":"Access denied","errorcode":"9999"}';
}
});
$app->run();
Мой файл .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . services.php [QSA,L]
</IfModule>
# Use PHP71 as default
AddHandler application/x-httpd-php71 .php
<IfModule mod_suphp.c>
suPHP_ConfigPath /opt/php71/lib
</IfModule>
Я создал поддомен (api.mydomain.com) с проектом / api / в качестве корня документа.
Когда я делаю запрос POST в моей локальной установке на
127.0.0.1/api/services.php/myEndpoint
работает как положено и возвращает данные. Однако, когда я делаю тот же запрос к моему поддомену Hostgator:
api.mydomain.com/services.php/myEndpoint
Я получаю ошибку 500.
Обратите внимание, что если я добавлю простой файл test.php в каталог api /, который только что-то печатает, например,
<?php
echo "OK"
?>
и я захожу на api.mydomain.com/test.php, он отлично работает и печатает строку.
Что мне нужно изменить или добавить в мой .htaccess для работы моего тонкого приложения?