PHP AltoRouter只提供基本URL



我是一个PHP新手,我正在使用AltoRouter设置一个简单的路由。下面是我的index.php和。htaccess文件,这是在路由文件夹即/var/www/html/我使用Apache2为网页提供服务。

index . php

<?php
require 'vendor/AltoRouter.php';
$router = new AltoRouter();
// map homepage
$router->map('GET', '/', function () {
    require __DIR__ . '/views/home.php';
});
$router->map('GET|POST', '/login', function () {
    require __DIR__ . '/views/login.php';
});
$router->map('GET', '/signup', function () {
    require __DIR__ . '/views/signup.php';
});
$match = $router->match();
// call closure or throw 404 status
if ($match && is_callable($match['target'])) {
    call_user_func_array($match['target'], $match['params']);
} else {
    // no route was matched
    header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}
?>

. htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

问题:当我访问localhost时,'home.php'得到服务,但当我访问'localhost/login'或'localhost/注册'时,我得到404错误。

我希望你能访问localhost/login.php,请尝试一下。

更改此代码

 $router->map('GET', '/', function () {
     require __DIR__ . '/views/home.php'; });
 $router->map('GET|POST', '/login', function () {
     require __DIR__ . '/views/login.php'; });
 $router->map('GET', '/signup', function () {
     require __DIR__ . '/views/signup.php'; });

与以下.....

$router->map('GET', '/views', '/views/home.php','home');
$router->map('GET', '/views/login', '/views/login.php','login');
$router->map('GET', '/views/signup', '/views/signup.php','signup');

似乎您的。htaccess文件被忽略了,这不是由AltoRouter或PHP引起的。

根据您使用的操作系统,您应该搜索如何在您的系统上激活。htaccess文件。

我遇到过同样的问题,您可以通过向路由器添加base_path来解决这个问题。假设我的altoroute项目在http://localhost/myapp/目录下我的公共目录下我有index.php文件http://localhost/myapp/public/index.php基本路径应该是

$router->setBasePath('/myapp/public');
                                   ^----don't but any / here

就这样。

相关内容

  • 没有找到相关文章

最新更新