Flight PHP框架路由不起作用
我今天从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
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
});