我遇到了一个问题:需要将许多损坏的链接重定向到新目标。目前所有旧链接都指向默认的404页面,但这不是一个选项。
我想创建一个Controller,我将在其中定义重定向规则。
不幸的是,我不知道如何捕获所有断开的链接以指向我的新控制器。
我已经做了你建议的更正,但不幸的是在重定向后我得到了错误500. $ redirect_url是正确的,我已经检查了。
这是新的模型功能:
// connect to DB
$GLOBALS['default_db'] = new DB('localhost','db_name','username','password') ;
// Get users and output results
$query = new DBQuery('SELECT * FROM users WHERE userid = ?',array(10)) ;
var_dump($query -> results()) ;
var_dump($query -> num_rows()) ;
// DB connection
class DB {
public $connection;
public function __construct($host , $dbname , $username , $password) {
$this->connection = new \PDO('mysql:host=' . $host . ';dbname=' . $dbname , $username , $password);
}
}
// Wrapper
class DBQuery {
private $num_rows = 0;
private $results = array();
public function __construct($query , $params = null , $class_name = null , DB $db = null) {
if ( is_null($db) ) {
$db = $GLOBALS['default_db'];
}
$statement = $db->connection->prepare($query);
$statement->execute($params);
$errors = $statement->errorInfo();
if ( $errors[2] ) {
throw new \Exception($errors[2]);
}
$fetch_style = ($class_name ? \PDO::FETCH_CLASS : \PDO::FETCH_OBJ);
$this->results = $class_name ? $statement->fetchAll($fetch_style , $class_name) : $statement->fetchAll($fetch_style);
$this->num_rows += $statement->rowCount();
while ( $statement->nextrowset() ) {
$this->results = array_merge($this->results,$class_name ? $statement->fetchAll($fetch_style , $class_name) : $statement->fetchAll($fetch_style));
$this->num_rows += $statement->rowCount();
}
}
public function num_rows() {
return $this->num_rows;
}
public function results() {
return $this->results;
}
}
并在Handler.php中:
public function redirect($url) {
$redirect_url = '';
if(preg_match('!/bukmeikari/(.*)/(.*).html!isU', $url, $matches)) {
$redirect_url = str_replace('/bukmeikari/', '/bg/bukmeikari/', $url);
}
if($redirect_url != '') {
Redirect::to($redirect_url, 301);
}
}
提前致谢
答案 0 :(得分:0)
您可以使用render
课程的App\Exceptions\Handler
方法来完成您的任务。
来自文档:
render方法负责将给定的异常转换为 应该发送回浏览器的HTTP响应。默认情况下, 异常传递给生成响应的基类 为了你。但是,您可以自由检查异常类型或返回 你自己的自定义回复