我是PHP的新手。我正在使用来自packagist.org的联盟/路由在我的应用程序中进行路由,我在我的根目录中有一个公共文件夹,我有一个index.php文件用于路由,如下所示。
require_once '../vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
$router = new League\Route\RouteCollection;
$router->addRoute('GET', '/acme', function (Request $request, Response $response) {
echo "here";
return "working";
});
$dispatcher = $router->getDispatcher();
$response = $dispatcher->dispatch('GET', '/acme');
$response->send();
.htaccess文件,如果在根文件夹中,则如下所示
RewriteEngine On
RewriteBase /HMT/public
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
问题是我跑http://localhost/HMT/acme时没有显示任何内容。我尝试在public / index.php文件的每一行之后添加一个echo语句,并注意到下面的行是不起作用的行。我也认为我的.htaccess可能是问题吗?
$dispatcher = $router->getDispatcher();
感谢您的帮助,谢谢。
答案 0 :(得分:3)
所以这里有几个问题。
似乎您关闭了错误报告,或者您会看到某种错误。
将以下代码添加到index.php
。
error_reporting(-1);
ini_set('display_errors', 'On');
您的.htaccess
实际上应该在您的public
目录中,并且格式如下。
RewriteEngine On
RewriteBase /HMT/public
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(html)
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
然后根据您提供的信息,如果您访问http://localhost/HMT/public
,那么所有信息都应正常运行。
根据您可能收到的任何错误以及您正在使用的league/route
版本,可能还有一个步骤可确保将请求URI正确发送给调度程序。