大家好,我是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行
感谢您回答我的问题,并帮助我提高了在这一领域的知识。
答案 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之间的区别。