PHP Slim3 on HostGator with custom htaccess file



我正在尝试在HostGator帐户上部署Slim的PHP框架。

我的项目源如下所示:

project/
├── .htaccess
├── src/
│   ├── classes/
│   ├── vendor/
│   ├── composer.json
│   ├── routes.php
│   ├── settings.php
│   └── index.php
└── public/
    ├── index.php
    └── .htaccess

并且部署方式相同,其中project文件夹是我的 HostGator 帐户上最高级别的文件夹,其中有public_html和其他东西。

按照教程,我在这样的public中添加了一个htaccess(逐字逐句(

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

而且在途中的某个地方,我将其添加到根htaccess文件中(其中还包括使用 PHP7 的设置,并且有效......

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase /
   RewriteRule ^$ public/     [L]
   RewriteRule (.*) public/$1 [L]
</IfModule>

当我尝试使用这些新htaccess文件访问该站点时,我得到了一个500 Internal Server Error.

显然我的htaccess是错误的,我只是不知道出了什么问题。我想应该发生的事情是任何请求都应该先发送给public/index.phpSlim和我自己将处理路由。


公共/索引.php

require __DIR__ . '/../src/vendor/autoload.php';
require __DIR__ . '/../src/dependencies.php';
require __DIR__ . '/../src/middleware.php';
require __DIR__ . '/../src/routes.php';
$settings = require __DIR__ . '/../src/settings.php';
use PsrHttpMessageServerRequestInterface as Request;
use PsrHttpMessageResponseInterface as Response;
// require custom classesw
spl_autoload_register(function ($classname) {
    require ("../src/classes/" . $classname . ".php");
});
session_start();
$app = new SlimApp($settings);
$container = $app->getContainer();
$container['logger'] = function($c) {
    $logger = new MonologLogger('my_logger');
    $file_handler = new MonologHandlerStreamHandler("../src/logs/app.log");
    $logger->pushHandler($file_handler);
    return $logger;
};

$app->get('/', function (Request $request, Response $response) {
    $response->getBody()->write("Hello");
    return $response;
});
$app->run();

已移至public public_html

htaccess文件恢复为正常文件(又名无(。

公共htaccess文件

<IfModule mod_rewrite.c> RewriteEngine on #RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . index.php [QSA,L] </IfModule>

最新更新