AltoRouter неправильно выполняет маршрутизацию

Я просто разрабатываю небольшое 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 работает нормально, так что, похоже, это не проблема файла или чего-то еще.

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

Есть идеи?

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

1 ответ

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

Это не было связано с PHP, AltoRouter, htaccess или чем-то еще...

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

Другие вопросы по тегам