2017-05-22 17 views
0

我試圖在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我增加了一個htaccesspublic這樣(逐字逐句)

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(); 
+0

你確定你的主機已經啓用了'100 mod_rewrite'%? – Hackerman

+0

是的http://support.hostgator.com/articles/how-to-enable-mod_rewrite-and-mod_speling – jozenbasin

+0

你的應用程序在本地工作嗎?,你可以發佈你的'index.php'文件的代碼在你的公共'文件夾? – Hackerman

回答

0

感動publicpublic_html

主要htaccess文件恢復到什麼是正常的(也就是沒有)。

公共htaccess文件

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

相關問題