Bonjour,

J'ai un problème d'arborescence, qui est je pense, dû à une mauvaise compréhension du .htaccess. J'espère que vous pourrez éclairer ma lanterne.

Voici le .htaccess :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
RewriteEngine On
 
RewriteCond %{REQUEST_URI} !index\.php
RewriteCond %{REQUEST_URI} !.*\.(jpg|gif|png|ico|css|js|htc|swf|ttf|eot|svg|woff)$ [NC]
RewriteRule ^(.*) index.php?p=$1
 
# # # #
# configure mod_headers 
#
# URL: http://httpd.apache.org/docs/2.2/mod/mod_headers.html
# # # #
<IfModule mod_headers.c>
    <FilesMatch "\\.(ico|jpe?g|png|gif|swf|css|js|ttf|woff|eot|svg])$">
        Header set Cache-Control "max-age=2692000, public"
    </FilesMatch>
    <FilesMatch "\\.(x?html?|php)$">
        Header set Cache-Control "max-age=600, private, must-revalidate"
    </FilesMatch>
    Header unset ETag
    Header unset Last-Modified
</IfModule>
Mon arborescence est comme ça :
|-- ATR
|...|-- controllers
|...|-- core
|...|-- models
|...|-- resources
|...|...|-- assets
|...|...|...|-- ionicons-1.5.2
|...|...|...|...|-- builder
|...|...|...|...|...|-- cheatsheet
|...|...|...|...| `-- scripts
|...|...|...|...|-- css
|...|...|...|...|-- fonts
|...|...|...|...|-- less
|...|...|...|...|-- png
|...|...|...|...| `-- 512
|...|...|...|...|-- scss
|...|...|...| `-- src
|...|...| `-- webfonts
|...|...| `-- OpenSans
|...|...|-- css
|...|...|-- img
|...|...| `-- tuto
|...| `-- js
|...`-- views
|.........|-- accueil
|.........|-- layout
|.........`-- test_wiki
Le .htaccess et l'index.php se situent tous les deux à la racine d'ATR.

voici aussi l'index.php :

Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
  define('WEBROOT', str_replace('index.php', '', $_SERVER['SCRIPT_NAME']));
  define('ROOT', str_replace('index.php', '', $_SERVER['SCRIPT_FILENAME']));
 
  // Chargement des classes génériques
  require(ROOT.'core/model.php');
  require(ROOT.'core/controller.php');
 
  // Récupération du nom des controller/action (fournis par le .htaccess)
  $params = explode('/', $_GET['p']);
  $controller_name = $params[0];
  if (isset($params[1]) && $params[1] != '')
  {
    $action = $params[1];
  }
  else
  {
    $action = 'index';
  }
 
  // Chargement du controller et exécution de l'action
  if (file_exists('controllers/'.$controller_name.'.php'))
  {
    require('controllers/'.$controller_name.'.php');
    $controller = new $controller_name();
 
    if (method_exists($controller, $action))
    {
      unset($params[0]);
      unset($params[1]);
      // permet d'exécuter une fonction (ici $controller->$action)
      // et y passer des arguments (ici $params 'nettoyé' des noms des controller et action
      call_user_func_array(array($controller, $action), $params);
    }
    else
    {
      echo 'Erreur 404 : Le couple controller/action n\'existe pas';
      // on peut inclure ici un fichier '404.php'
    }
  }
  else
  {
    echo 'Erreur 403 : Le controller demandé n\'a pas été trouvé';
  }

Merci d'avance