я использую Altorouter
в базовом приложении PHP (без фреймворка), но почему-то это не работает. Ниже приведены детали:
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";
Это печатает Готово и нет ошибок в журнале php.
Htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
Я получаю доступ к нему как `HTTP: // локальный / дом / MyApp /
Хорошо, я понял проблему. URL, к которому я хочу получить доступ:
http://localhost/home/myapp/
Altorouter
не знает о корневом URL, поэтому необходимо установить basePath. это делается как:
$router->setBasePath('/home/myapp');
Обратите внимание, что нет трейлинг /
следует положить в setBasePath
потому что мы поместим это в наш map
функционировать так:
$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';
}
Других решений пока нет …