0

我在 MVC 应用程序上工作,我有以下格式的 url:

http://127.0.0.1/PDO/PARTIE%20III/index.php?rt=index/connexion
http://127.0.0.1/PDO/PARTIE%20III/index.php?rt=index/nouveauMsg

我正在寻求重写 url,使其显示为:

http://127.0.0.1/PDO/PARTIE%20III/index/connexion
http://127.0.0.1/PDO/PARTIE%20III/index/nouveauMsg

有没有人有任何建议可以帮助我完成这个 url_rewrite?

那是解析 URL 并加载正确视图和/或操作的路由器类

<?php

class router {
 /*
 * @the registry
 */
 private $registry;

 /*
 * @the controller path
 */
 private $path;

 private $args = array();

 public $file;

 public $controller;

 public $action; 

 function __construct($registry) {
    $this->registry = $registry;
 }

 /**
 *
 * @set controller directory path
 *
 * @param string $path
 *
 * @return void
 *
 */
 function setPath($path) {

/*** check if path i sa directory ***/
if (is_dir($path) == false)
{
    throw new Exception ('Invalid controller path: `' . $path . '`');
}
/*** set the path ***/
$this->path = $path;
}


 /**
 *
 * @load the controller
 *
 * @access public
 *
 * @return void
 *
 */
 public function loader()
 {
/*** check the route ***/
$this->getController();

/*** if the file is not there diaf ***/
if (is_readable($this->file) == false)
{
    $this->file = $this->path.'/error404.php';
            $this->controller = 'error404';
}

/*** include the controller ***/
include $this->file;

/*** a new controller class instance ***/
$class = $this->controller . 'Controller';
$controller = new $class($this->registry);

/*** check if the action is callable ***/
if (is_callable(array($controller, $this->action)) == false)
{
    $action = 'index';
}
else
{
    $action = $this->action;
}
/*** run the action ***/
$controller->$action();
 }


 /**
 *
 * @get the controller
 *
 * @access private
 *
 * @return void
 *
*/
private function getController() {

/*** get the route from the url ***/
$route = (empty($_GET['rt'])) ? '' : $_GET['rt'];

if (empty($route))
{
    $route = 'index';
}
else
{
    /*** get the parts of the route ***/
    $parts = explode('/', $route);
    $this->controller = $parts[0];
    if(isset( $parts[1]))
    {
        $this->action = $parts[1];
    }
}

if (empty($this->controller))
{
    $this->controller = 'index';
}

/*** Get action ***/
if (empty($this->action))
{
    $this->action = 'index';
}

/*** set the file path ***/
$this->file = $this->path .'/'. $this->controller . 'Controller.php';
}


}

?>

4

1 回答 1

1

.htaccess在文档根目录或 Apache 配置文件中使用此重写规则:

RewriteEngine On
RewriteRule ^PDO/PARTIE%20III/(.*)$ PDO/PARTIE%20III/index.php?rt=$1 [L]

您可以在Martin Melin 的网站上轻松测试重写规则。

更多信息:Apache 的mod_rewrite模块

于 2012-06-30T04:37:12.947 回答