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

ドキュメント ルートまたは Apache 構成ファイルで、次の書き換えルールを使用し.htaccessます。

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 に答える