该应用使用Aura Router进行路由。访问Web应用程序的index.php只会返回"未找到路由"错误信息。
这是(貌似)相关代码:
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$route = $router->match($path, $_SERVER);
if (empty($route)) {
header("HTTP/1.0 404 Not Found");
echo 'Route not found';
exit;
}
我使用wampserver在本地运行它。我有应用程序的路径是localhost /网站
我错过了什么?
答案 0 :(得分:1)
本手册可以帮助您:https://github.com/auraphp/Aura.Router#handling-failure-to-match
(我是Aura的领导者。)
答案 1 :(得分:0)
您应该检查$path
的值并验证它是否正确。我有同样的问题,我意识到我使用了错误的数据。
假设您的网站位于:example.com/path/sub/
,并且您希望将所有网址路由到sub/
旁边。您的$path
应为/
,以便$router
使用$router->add("home", "/")
。{/ 1}}。
如果$path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
则此值为/path/sub/
,那么您的路由器必须指向路线:$router->add("home", "/path/sub/")
。
你也应该对结束/
非常小心,因为可以存在或不存在。
答案 2 :(得分:0)
请按照“getting-started.md”文件中的步骤进行操作。
它帮助了我。
下面的代码段允许路由“/ blog / {id}”,类似于localhost上的以下网址:http://localhost/blog/42
$routerContainer = new RouterContainer();
$map = $routerContainer->getMap();
$map->get('blog.read', '/blog/{id}', function ($request, $response) {
$id = (int) $request->getAttribute('id');
echo "You asked for blog entry {$id}.<br/>";
httperror(200);
});
//
// ... Create more routes here ...
//
$request = Zend\Diactoros\ServerRequestFactory::fromGlobals(
$_SERVER, $_GET, $_POST, $_COOKIE, $_FILES
);
$matcher = $routerContainer->getMatcher();
$route = $matcher->match($request);
if (!$route) {
$failedRoute = $matcher->getFailedRoute();
switch ($failedRoute->failedRule) {
case 'Aura\Router\Rule\Allows':
httperror(405);
break;
case 'Aura\Router\Rule\Accepts':
httperror(406);
break;
default:
httperror(404);
break;
}
die();
}
foreach ($route->attributes as $key => $val) {
$request = $request->withAttribute($key, $val);
}
$response = new \Zend\Diactoros\Response;
$callable = $route->handler;
$response = $callable($request,$response);