我今天开始使用PHP Framework Flight。现在我从他们的主页下载了“飞行骨架”。
这是文件夹结构的图像:
这是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 :(得分:1)
我遇到了同样的问题,但是当我配置apache2.conf文件(/ etc / 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]
这就是全部。
答案 1 :(得分: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框架。
确保.htaccess与index.php文件位于同一文件夹/目录/级别。
答案 2 :(得分:0)
就我而言,默认apache2.conf
导致航班失败。
不得不改变
<Directory /var/www/>
AllowOverride None
</Directory>
到
<Directory /var/www/>
AllowOverride all
</Directory>
这样我的.htaccess
实际应用了。 然后一切正常。
答案 3 :(得分:0)
按照定义的顺序匹配路由。匹配请求的第一个路由将是被调用的路由。
您可以在路线中使用正则表达式:
Flight::route('/user/[0-9]+', function(){
// This will match /user/1234
});