2016-10-26 18 views
1

Altorouter을 기본 PHP 응용 프로그램 (프레임 워크 없음)에서 사용하고 있지만 어떻게 든 작동하지 않습니다.Altorouter가 경로를 실행할 수 없습니다

그것은 완료를 인쇄합니다

<?php 
error_reporting(E_ALL); 
ini_set('display_errors',1); 
require_once __DIR__ . '/vendor/autoload.php'; 

$router = new AltoRouter(); 

$router->map('GET', '/', function() { 
    include __DIR__ . 'home.php'; 
}); 

print "Done"; 

의 index.php와 PHP 로그에 오류 : 아래 사항입니다.

htaccess로

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . index.php [L] 

나는`http://localhost/home/myapp/

+1

아마'이어야한다 __DIR__ 포함 . '/home.php'; ' – Phil

+0

@Phil은 여전히 ​​작동하지 않았습니다. – Volatil3

+0

@ Phil - yep. 나는'require '를 사용하는 것으로까지까지 나아갈 것이다. 포함 된 파일에서 배열처럼 돌아 오는 경우 내가 찾은 유일한 진정한 이점이 있습니다. 그렇지 않으면 require가 실패하고 빠진 슬래시를 알려줍니다. __DIR__은 경로에 엔딩 슬래시를 추가하지 않습니다. – ArtisticPhoenix

답변

2

좋아, 내가 알아 낸 문제로 접근을입니다. 내가 액세스 할 URL은 다음과 같습니다 basePath 설정 될 필요가 있으므로

http://localhost/home/myapp/

Altorouter

루트 URL에 대해 알고하지 않습니다.

$router->setBasePath('/home/myapp');

우리가 그런 우리의 map 기능에 그것을 넣어 때문에 후행 /setBasePath에 넣어해서는 안가 있음을 유의 마십시오 :으로 이루어집니다

$router->map('GET', '/', 'home.php', 'home'); 
$match = $router->match(); 
if ($match) { 
    require $match['target']; 
} else { 
    header("HTTP/1.0 404 Not Found"); 
    require '404.html'; 
} 
+0

그래서'setBasePath '가 이러한 모든 문제를 일으키고 있는가? –