[英]Production server Slim Framework routing
這是我第一次使用Slim Framework,到目前為止,我真的很喜歡該應用程序的外觀。 使它幾乎像一個快速的API服務器。
我已經在本地計算機上構建了一個小型服務器,可以很好地與虛擬主機一起工作。
它與我在本地設置的虛擬主機有關,但是我試圖通過.htaccess文件來繞過它。
在生產服務器上,如果我輸入http://www.domain.com/public/resource,它將起作用。
我的目錄結構如下:
public/
index.php
.htaccess
src/
.htaccess
根文件夾中的.htaccess如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
公用文件夾中的.htaccess如下所示:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
我還將發布index.php的一部分,並顯示到目前為止的登錄位置。
$app = new Slim\Slim();
$env = $app->environment();
switch($env['REMOTE_ADDR']) {
case '127.0.0.1':
define('ENVIRONMENT', 'local');
break;
default:
define('ENVIRONMENT', 'production');
break;
}
// Here a log works when you go to http://www.domain.com
// Get
$app->get('/:resource(/(:id)(/))', function($resource, $id = null) {
// Here it works on local machine on production there's no possible way to get here
// var_dump('foobar');die; will respond nothing to cURL -i -X GET http://www.domain.com/resource
// The request will return a 404 error
$resource = \App\Resource::load($resource);
if ($resource === null) {
\App\Resource::response(\App\Resource::STATUS_NOT_FOUND);
} else {
$resource->get($id);
}
});
經過一些研究,結果證明Slim現在還沒有解決這個問題的方法。
如此處所述: https : //github.com/codeguy/Slim/issues/521在不久的將來這不會改變。 因此,我修復了虛擬主機的問題。
看起來您已經知道了,但是對於其他任何通過google搜索登陸此處的人,此問題顯然已得到解決(截至本評論為止,尚未試用)。
請參閱有關GH問題的評論: https : //github.com/codeguy/Slim/issues/521#issuecomment-27479265
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.