我正在尝试在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.php
,Slim
和我自己将处理路由。
公共/索引.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>