2016-03-15 3 views
1

Я начал сегодня с Flight Framework Framework. Теперь я загрузил «Скелет полета» со своей домашней страницы.Рейс PHP Framework Маршрутизация не работает

Вот образ Структур папки:

enter image description here

Вот что находится внутри index.php файла:

<?php 
 

 
    require 'flight/Flight.php'; 
 
    
 
    Flight::route('/', function(){ 
 
     echo "Hello World"; 
 
    }); 
 

 
    Flight::route('/categorie', function(){ 
 
     echo "Hello World"; 
 
    }); 
 

 
    Flight::start(); 
 

 
?>

Если я запускаю браузер и введите URL-адрес http://localhost/firstflight/. Я получаю «Hello World» , Но если я вхожу http://localhost/firstflight/categorie, я получаю сообщение об ошибке 404 Webpage not found.... Как я могу исправить эту проблему?

Вот код внутри файла .htaccess:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [QSA,L] 
+0

Необходимо выполнить некоторые настройки при работе в подкаталоге (вам действительно нужно просто создать виртуальный хост и запустить его таким образом) http://stackoverflow.com/questions/20890210/flight-php-routing-from -subdirectory – JimL

+0

Что значит «вы действительно должны просто ...»? – MyNewName

+0

Вы можете создать виртуальный хост (в apache, nginx и т. Д.), Который отобразит некоторый домен (т. Е. Flightapp.local) в папку spesific (yourwww/firstflight). то вы можете просто добавить '127.0.0.1 flightapp.local' в свой файл хостов компьютеров, и вы можете получить доступ к http: // flightapp.local' – JimL

ответ

1

У меня была такая же проблема, но когда я настраиваю apache2.conf файл (/ и т.д./apache2) он работает. Там вы должны изменить AllowOverride.

<Directory /var/www/> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Require all granted 
</Directory> 

тогда мой файл .htaccess выглядеть следующим образом

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Это все.

0

Это сработало для меня. В файле .htaccess вставьте строки кода ниже.

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 

Это те же самые, что использовались в Laravel - более продвинутой PHP Framework.

Убедитесь, что .htaccess находится в той же папке/каталоге/уровне, что и файл index.php.

0

В моем случае это было по умолчанию apache2.conf, что вызвало Полет сбой.

бы изменить

<Directory /var/www/> 
    AllowOverride None 
</Directory> 

в

<Directory /var/www/> 
    AllowOverride all 
</Directory> 

Таким образом, мой .htaccess фактически применяется. И тогда все работает так, как должно.

Смежные вопросы