AltoRouter неправильно выполняет маршрутизацию - PullRequest
0 голосов
/ 12 января 2019

Я просто разрабатываю небольшое WebApp на PHP и для маршрутизации использую AltoRouter .

Пока что я только разрабатывал и тестировал в автономном режиме, так что на моем локальном хосте. Теперь, чтобы увидеть поведение на сервере, я загрузил свой код, исправил соединение с базой данных, чтобы оно соответствовало MySQL-серверу, работающему на сервере (это Ubuntu 14.04), и попытался запустить его.

Во-первых, то, что я делаю для маршрутизации, это простой .htaccess, выглядящий так:

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

А потом, в моем index.php, маршрутизация сделана

<?php 

include 'vendor/altorouter/altorouter/AltoRouter.php';

$router = new AltoRouter();
$router->setBasePath('');

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

$router->map('GET','/header','header.php','header');
$router->map('GET','/jquery','vendor/components/jquery/jquery.js','jquery');
$router->map('GET','/bootstrapjs','vendor/twbs/bootstrap/dist/js/bootstrap.js','bootstrapjs');
$router->map('GET','/bootstrapcss','vendor/twbs/bootstrap/dist/css/bootstrap.css','bootstrapcss');
$router->map('GET','/generalStyle','style.css','generalStyle');
$match = $router->match();
if($match) {
  if($match['name'] === 'generalStyle'){
    header("Content-Type: text/css");
    $fileName = $match['target'];
    echo file_get_contents($fileName);
    return;
  }
  require $match['target'];
}
else {
  header("HTTP/1.0 404 Not Found");
  require '404.php';
}

?>

Это прекрасно работает на моем локальном хосте, так что в общем-то проблем не возникает.

Однако на моем сервере при переходе к IP-адресу сначала кажется, что он работает, поскольку при переходе только к / файл home.php загружается правильно. Но какой бы другой маршрут я ни назвал, например /impressum, он не работает, возвращаясь к /, home.php снова работает.

Теперь замена home.php (в маршруте) на impressum.php также работает, тогда я вижу и нужный файл. Подводя итог, кажется, что это всегда только первый маршрут, который работает.

У кого-нибудь есть идея, почему это происходит или в чем проблема?

Я пытался вызывать файлы напрямую, и (кроме некоторых не загруженных скриптов и т. Д.) Он работает, поэтому переход к myDomain.com/impressum.php работает нормально, поэтому, похоже, это не проблема файла или sth.

Я также попытался установить разрешение для проекта отверстия 755, чтобы убедиться, что это не проблема, но результаты те же.

Есть идеи?

РЕДАКТИРОВАТЬ: Я много пробовал, но все равно не получилось ... Однако я понял, что это не "первый маршрут", а только / - роут, который работает. Любой другой маршрут не работает, но опять же, все работает на локальном хосте с запущенным XAMPP ...

1 Ответ

0 голосов
/ 12 января 2019

Наконец-то я решил проблему ..

Все это не касалось PHP, AltoRouter, htaccess или чего-то еще ...

Решением было установить AllowOverride в All в Directory моего vhost -конфига ....

...