【发布时间】:2019-03-26 19:39:14
【问题描述】:
我被未重定向到我创建的页面的 URI 所困扰。我有页面
- about.php
- about-culture.php
- contact.php
- index.php
索引页面工作正常,但是当我尝试重定向到其他页面时,它会引发异常
Fatal error: Uncaught Exception: No route defined for this URI. in /opt/lampp/htdocs/learnPHP/core/Router.php:21 Stack trace: #0 /opt/lampp/htdocs/learnPHP/index.php(6): Router->direct('about/about/cul...') #1 {main} thrown in /opt/lampp/htdocs/learnPHP/core/Router.php on line 21
如果问题无法理解,我还会录制视频来描述我的问题。 https://www.useloom.com/share/5199399f3b5f42dd9c589a47dad0738f
我尝试了很多东西在代码中做出了改变。当我 var_dump() 到 uri 函数时,它会返回多个链接,这些链接是错误的 URI
我的 routes.php 文件
<?php
$router->define([
'' => 'controllers/index.php',
'about' => 'controllers/about.php',
'about/culture' => 'controllers/about-culture.php',
'contact' => 'controllers/contact.php'
]);
index.php
$database = require 'core/bootstrap.php';
require Router::load('routes.php')
->direct(Request::uri());
.htaccess
RewriteEngine On
AddType text/css .css
AddType text/javascript .js
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
RewriteRule ^.*$ index.php [END]
请求.php
<?php
class Request
{
public static function uri()
{
$uri = (substr($_SERVER['REQUEST_URI'],10));
$removeSlash = rtrim($uri, '/');
return var_dump($removeSlash);
}
}
Router.php
<?php
class Router
{
protected $routes = [];
public static function load($file)
{
$router = new static;
require $file;
return $router;
}
public function define($routes)
{
$this->routes = $routes;
}
public function direct($uri)
{
if (array_key_exists($uri, $this->routes)) {
return $this->routes[$uri];
}
throw new Exception('No route defined for this URI.');
}
}
?>
请点击链接查看生成的图片https://prnt.sc/n3ar12
【问题讨论】:
-
你使用的是哪个框架?
-
您好,感谢您的重播。我没有使用任何框架,它是一个治愈 php 我关注系列 laracasts.com/series/php-for-beginners 并且问题出现在视频编号 17 中干掉你的观点视频链接 laracasts.com/series/php-for-beginners/episodes/17 如果你愿意,还有什么要分享的吗?谢谢
标签: php