我試圖在HostGator帳戶上部署Slim
PHP框架。在HostGator上使用自定義htaccess文件的PHP Slim3
我的項目的源代碼如下所示:
project/
├── .htaccess
├── src/
│ ├── classes/
│ ├── vendor/
│ ├── composer.json
│ ├── routes.php
│ ├── settings.php
│ └── index.php
└── public/
├── index.php
└── .htaccess
,並部署相同,其中project
文件夾是我的HostGator的帳戶,那裏的東西像public_html
和其他東西都是最高級別的文件夾。
繼tutorial我增加了一個htaccess
到public
這樣(逐字逐句)
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(s)是錯誤的,我只是不知道什麼是錯的。我想應該發生的是任何請求應發送到public/index.php
第一個和Slim
我自己將處理路由。
公共/ index.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 \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
// require custom classesw
spl_autoload_register(function ($classname) {
require ("../src/classes/" . $classname . ".php");
});
session_start();
$app = new \Slim\App($settings);
$container = $app->getContainer();
$container['logger'] = function($c) {
$logger = new \Monolog\Logger('my_logger');
$file_handler = new \Monolog\Handler\StreamHandler("../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();
你確定你的主機已經啓用了'100 mod_rewrite'%? – Hackerman
是的http://support.hostgator.com/articles/how-to-enable-mod_rewrite-and-mod_speling – jozenbasin
你的應用程序在本地工作嗎?,你可以發佈你的'index.php'文件的代碼在你的公共'文件夾? – Hackerman