Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flight PHP框架路由不起作用_Php_.htaccess_Frameworks - Fatal编程技术网

Flight PHP框架路由不起作用

Flight PHP框架路由不起作用,php,.htaccess,frameworks,Php,.htaccess,Frameworks,我今天从PHP框架飞行开始。现在我从他们的主页下载了“飞行骨架” 以下是文件夹结构的图像: 下面是index.php文件中的: 我也遇到了同样的问题,但是当我配置apache2.conf文件(/etc/apache2)时,它可以工作。 在那里,你必须换上AllowOverride <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all grante

我今天从PHP框架飞行开始。现在我从他们的主页下载了“飞行骨架”

以下是文件夹结构的图像:

下面是
index.php
文件中的:


我也遇到了同样的问题,但是当我配置apache2.conf文件(/etc/apache2)时,它可以工作。 在那里,你必须换上AllowOverride

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

仅此而已。

这对我很有效。在.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>

选项-多视图
重新启动发动机
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
它与Laravel中使用的相同,Laravel是一个更高级的PHP框架


确保.htaccess与index.php文件位于同一文件夹/目录/级别。

在我的例子中,是默认的
apache2.conf
导致飞行失败

必须改变

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

不允许超限


允许超越所有

通过这种方式,我的
.htaccess
实际上得到了应用然后一切都会正常工作。

按定义的顺序匹配路由。匹配请求的第一个路由将是被调用的路由

您可以在路由中使用正则表达式:

Flight::route('/user/[0-9]+', function(){

    // This will match /user/1234
});

当在子目录中运行时,您需要做一些调整(您真的应该创建一个虚拟主机并以这种方式运行它)您所说的“您真的应该…”是什么意思?您可以创建一个虚拟主机(在apache、nginx等中),将某个域(即flightapp.local)映射到一个特定文件夹(您的www/firstflight)。然后,您只需将
127.0.0.1 flightapp.local
添加到您的计算机主机文件中,即可访问
http://flightapp.local
@JimL现在我有点困惑了。我现在正在运行xamp,我可以访问该网页。问题是,当我试图打开路由时,显示了一个错误(
404错误页
)http://localhost/firstflight/categorie。另一条路线
http://localhost/firstflight/
运行良好。是的,您要么做一些更改使其在子目录中工作,要么不必拥有子目录(即使用虚拟主机)
<Directory /var/www/>
    AllowOverride all
</Directory>
Flight::route('/user/[0-9]+', function(){

    // This will match /user/1234
});