我有这个索引。php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Title</title>
</head>
<body>
<?php
$routes = [];
route('/', function () {
require_once "pages/homepage/homepage.php";
});
route('/gallery', function () {
require_once "pages/gallery/gallery.php";
echo "gallery";
});
route('/about_us', function () {
require_once "pages/about_us/about_us.php";
});
route('/404', function () {
require_once "pages/404/404.php";
});
function route(string $path, callable $callback) {
global $routes;
$routes[$path] = $callback;
}
run();
function run() {
global $routes;
$uri = $_SERVER['REQUEST_URI'];
$found = false;
foreach ($routes as $path => $callback) {
if ($path !== $uri) continue;
$found = true;
$callback();
}
if (!$found) {
$notFoundCallback = $routes['/404'];
$notFoundCallback();
}
}
?>
</body>
</html>
注意:项目需要vanilla PHP。
我的问题是路由。当我在localhost ex上运行它时,它工作得很好:localhost:3000/gallery等但在已发布的站点上运行时返回404错误,例如: www.example.com 是PHP中正确的路由方式吗?
1条答案
按热度按时间mwkjh3gx1#
这种方法通常适用于小型网站和应用程序。如果它有增长的趋势,我建议考虑使用像Laravel这样的框架。
但对于你的问题,我的猜测是你缺乏一个。htaccess文件。您需要告诉服务器,无论站点访问者试图获取的URL是什么,它都应该尝试并运行index。php,而不是其他文件。
查看this线程
此外,第二件要尝试的事情是附加 www.example.com 忙但即使它这样做,你仍然需要一个htaccess文件来删除。php文件。良好安全的做法