2016-08-30 9 views
3

Ich bin ein Noobie in PHP, ich richte ein einfaches Routing mit AltoRouter ein. Unten sind meine index.php und .htaccess Datei, die auf dem Route-Ordner sind, d. H./Var/www/html/ Ich benutze Apache2 zum Servieren der Webseiten.PHP AltoRouter dient nur als Basis-URL

index.php

<?php 
require 'vendor/AltoRouter.php'; 

$router = new AltoRouter(); 
// map homepage 
$router->map('GET', '/', function() { 
    require __DIR__ . '/views/home.php'; 
}); 

$router->map('GET|POST', '/login', function() { 
    require __DIR__ . '/views/login.php'; 
}); 

$router->map('GET', '/signup', function() { 
    require __DIR__ . '/views/signup.php'; 
}); 

$match = $router->match(); 

// call closure or throw 404 status 
if ($match && is_callable($match['target'])) { 
    call_user_func_array($match['target'], $match['params']); 
} else { 
    // no route was matched 
    header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found'); 
} 
?> 

.htaccess

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

Problem: Wenn ich localhost besuchen, die 'home.php' serviert bekommen, aber wenn ich besuchen 'localhost/login' oder 'localhost/signup', bekomme ich 404 Fehler.

Antwort

1

Ich hoffe, Sie sollten localhost/login.php .try es bitte besuchen.

+0

Ich bekomme den gleichen 404 Fehler. – user2379271

1

Ändern Sie diesen Code

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

$router->map('GET|POST', '/login', function() { 
    require __DIR__ . '/views/login.php'; }); 

$router->map('GET', '/signup', function() { 
    require __DIR__ . '/views/signup.php'; }); 

mit der folgenden .....

$router->map('GET', '/views', '/views/home.php','home'); 

$router->map('GET', '/views/login', '/views/login.php','login'); 

$router->map('GET', '/views/signup', '/views/signup.php','signup'); 
+0

Nein, hilft nicht. Immer noch 404 – user2379271

+0

besuchen Sie den Link https://www.longren.io/basic-routing-in-php-with-altorouter/ – ashik

+0

Ich versuchte alles aus dem Link vor dem Posten der Frage hier, nicht sicher, wo genau das Problem ist. – user2379271

1

Es scheint, dass Ihre .htaccess-Datei ignoriert wird, ist, dass nicht durch AltoRouter oder PHP verursacht.

Je nachdem, welches Betriebssystem Sie haben, sollten Sie suchen, wie Sie die .htaccess-Datei auf Ihrem System aktivieren.

0

Ich habe das gleiche Problem konfrontiert und Sie können es lösen, indem Sie einen Basispfad zum Router hinzufügen. Lets sagen, dass ich meine altoroute Projekt in das Verzeichnis haben http://localhost/myapp/ und mein öffentliches Verzeichnis in I index.php Datei http://localhost/myapp/public/index.php der Basispfad

$router->setBasePath('/myapp/public'); 
            ^----don't but any/here 

sein sollte und das ist es.

+0

http://stackoverflow.com/questions/40253868/altorouter-cant-execute-routes –