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