猿问

说明如何在PHP中使用简单的路由系统

大家好,我是 PHP 路由系统的新手。在网上搜索我找到了这个简短的代码来解释路由应该如何工作但是......我无法理解它以哪种方式将我的请求路由到所需的页面:


<?php


// Get the requested path with $_SERVER['REDIRECT_URL'],

// and require the page you want to display. I have '' and '/' for both url.com/ and url.com.


// REDIRECT_URL returns normal url e.g. /review,

// in the other hand REQUEST_URI returns including query string e.g. /review?page=4


$request = $_SERVER['REDIRECT_URL'];


switch ($request) {

    case '/' :

        require __DIR__ . '/views/index.php';

        break;


    case '' :

        require __DIR__ . '/views/index.php';

        break;


    case '/about' :

        require __DIR__ . '/views/about.php';

        break;


    default:

        require __DIR__ . '/views/404.php';

        break;

}

当我第一次打开它时,它会将我重定向到 index.php:


<h1>main</h1>

另一个页面是about.php:


<h1>about</h1>

我的问题是:如何使用路由系统切换到about.php?


因为如果我在 url localhost/simpleRouter/views/about.php 里面写它看起来我绕过了路由系统......所以我不知道如何正确使用它来在页面之间切换。Morover,index.php 页面向我显示了 MAIN,这很好,但我收到以下信息:


注意:未定义索引:第 9 行 D:\App\xAMPP\htdocs\studio\Php\SviluppareInPHP7\CAP7\simpleRouter\index.php 中的 REDIRECT_URL


感谢您回答我的问题并帮助我提高我在该领域的知识。


一只甜甜圈
浏览 129回答 1
1回答

九州编程

您正在寻找 URL 重写。您可以配置您的网络服务器(Apache、NGinx 等)来重定向所有或部分请求,例如到您的 router.php。Apache URL 重写NGinx URL 重写在您的 router.php 中,您可以提取最初请求的 URL,例如about.php.&nbsp;请注意,这与views/about.php.&nbsp;然后“路由器”包含指定的文件。这允许您使用任意 URL 而不是文件名。还可以在此处查看REDIRECT_URL 和 REQUEST_URL 之间的区别。
随时随地看视频慕课网APP
我要回答