2016-10-26 9 views
1

Ich benutze Altorouter in einer grundlegenden PHP-App (Kein Rahmen), aber irgendwie funktioniert es nicht. Im Folgenden sind Details:Altorouter kann keine Routen ausführen

index.php

<?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"; 

Es und kein Fehler in PHP-Protokoll Fertig druckt.

.htaccess

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

Ich bin Zugang als `http://localhost/home/myapp/

+1

wahrscheinlich sein sollte 'umfassen __DIR__ . '/home.php'; ' – Phil

+0

@Phil noch, hat nicht funktioniert. – Volatil3

+0

@Phil - ja, und ich würde sogar so weit gehen zu sagen, verwenden Sie stattdessen "erfordern". Der einzige wirkliche Vorteil von Include, den ich jemals gefunden habe, ist, wenn Sie wie ein Array in der enthaltenen Datei zurückkehren. Sonst würde require fehlschlagen und Ihnen sagen, dass Ihnen ein Schrägstrich fehlt. Because __DIR__ fügt dem Pfad den Endslash nicht hinzu. – ArtisticPhoenix

Antwort

2

Ok dachte ich, das Thema aus. Die URL ich zugreifen will, ist:

http://localhost/home/myapp/

Altorouter nicht über Root-URL kennt so basePath gesetzt werden muss. es geschieht wie:

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

Sie beachten, dass es keine Hinter / sollte in setBasePath gestellt werden, weil wir, dass in unserer map Funktion so sagen wird:

$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

Also verursacht 'setBasePath 'all diese Probleme? –