[英]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
和其他内容则在其中。
在学习完本教程之后,我将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是错误的,我只是不知道什么是错误的。 我想应该发生的是任何请求都应该先发送到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();
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.