簡體   English   中英

生產服務器Slim Framework路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM