说明如何在PHP

时间:2019-05-20 10:17:52

标签: php routing

大家好,我是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,这很好,但是我收到以下消息:

  

通知:未定义索引:REDIRECT_URL   D:\ App \ xAMPP \ htdocs \ studio \ Php \ SviluppareInPHP7 \ CAP7 \ simpleRouter \ index.php   在第9行

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

1 个答案:

答案 0 :(得分:0)

您正在寻找URL重写。您可以将您的Web服务器(Apache,NGinx等)配置为重定向所有或某些请求,例如到您的router.php。

Apache URL Rewriting
NGinx URL Rewriting

然后在您的router.php中,您可以提取最初请求的URL,例如about.php。请注意,这与views/about.php不同。 然后,“路由器”包括指定的文件。这样,您可以使用任意URL代替文件名。

还要查看REDIRECT_URL和REQUEST_URL here之间的区别。