如何获取switch语句的URL路径?我试过$_SERVER['REQUEST_URI']
但是无法让它发挥作用。例如:
$aPage = 'app/views/home.php';
switch($_SERVER['REQUEST_URI'])
{
case "home":
$aPage = "app/views/home.php";
break;
case "how":
$aPage = "app/views/how.php";
break;
}
return $aPage;
所以在root上显示:$aPage = 'app/views/home.php
(它确实如此)
如果网址为http://localhost/how/
,则会返回$aPage = "app/views/how.php"
。
现在我收到了404请求的URL /在这台服务器上找不到/的方式。
答案 0 :(得分:0)
问题是您正在导航到http://localhost/how/
URL,它只是试图在服务器上找到一个标有&#34的目录;如何"而没有找到它。这称为路由,通常使用重写规则进行处理。这是基本的想法:
http://localhost.com/?view=how
$_GET
变量获取该变量并执行您的逻辑(包括文件,修改输出等)然后,您需要在服务器端添加重写规则。使用apache通过在服务器的根目录上添加标记为.htaccess
的文件来完成。在该文件中添加:
RewriteEngine On
RewriteRule ^([^/d]+)/?$ index.php?view=$1 [QSA]
这将获取该URL并更新它,使其在地址栏中看起来像http://localhost/how/
,但由PHP解释为在主索引文件上有一个查询字符串参数。至于你的switch语句,它将改为看起来像这样:
$aPage = 'app/views/home.php';
switch( $_GET['view'] ) {
case "home":
$aPage = "app/views/home.php";
break;
case "how":
$aPage = "app/views/how.php";
break;
}
return $aPage;
虽然让函数逻辑更像是这样可能更容易:
$route = $_GET['view'] ? $_GET['view'] : 'home'; // if view exists set it, if not default to 'home'
$validRoutes = array('home', 'how'); // array of acceptable routes
if( in_array( $route, $validRoutes ) ) {
return sprintf('app/views/%s', $route);
}
return false; // return false if invalid