HostGator上的PHP Slim3,带有自定义htaccess文件

时间:2017-05-22 20:43:04

标签: php apache .htaccess mod-rewrite

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

我的项目来源如下:

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是错误的,我只是不知道出了什么问题。我想应该发生的事情应该是首先将public/index.phpSlim发送到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(); 并且我自己将处理路由。

公共/ index.php的

Unable to load DLL 'SqlServerSpatial.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

1 个答案:

答案 0 :(得分:0)

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>