2013-08-13 5 views
1

슬림 프레임 워크로 작업 한 것은 이번이 처음입니다. 지금까지는 애플리케이션의 모양과 느낌이 정말 마음에 듭니다. 명시적인 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); 
    } 
}); 

답변

1

일부 연구 결과 슬림은 이제이 문제에 어떻게 대처할 수 있는지 밝혀지지 않았습니다.

여기에 언급 된 것처럼 : https://github.com/codeguy/Slim/issues/521 이것은 가까운 장래에 변경되지 않을 것입니다. 그래서 가상 호스트로 문제를 해결했습니다.

+0

가상 호스트 설정이 더 나은 솔루션 어쨌든 이럴입니다 :

는 GH의 문제에 대한 설명을 참조하십시오 – Kristian