8721 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Aujourd'hui j'ai voulu créer ma propre arborescence et une gestion des urls en "rewriting".

ex :
http://[mon_site]/mvc/ => accueil
http://[mon_site]/mvc/home => accueil
http://[mon_site]/mvc/user => mon espace

.htaccess à la racine de http://[mon_site]/mvc/

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>


index.php à la racine de http://[mon_site]/mvc/

$routing = require 'config/routing.php';

if($routing[$_SERVER['REQUEST_URI']]){
    echo $controller = $routing[$_SERVER['REQUEST_URI']]['controller'];
    echo $method = $routing[$_SERVER['REQUEST_URI']]['action'];
    
    require('controllers/'.$controller.'.php'); 
     
    $app = new $controller();
    $app->$method();
}else{
    //404
    require('controllers/pagesErreur.php'); 
    $app = new PagesErreur();
    $app->page_404();
}


Pour le premier exemple je n'ai pas de problème ; cependant lorsque je tente le seconde et le troisième j'ai une erreur de type 404 : "Not Found The requested URL /mvc/home was not found on this server. "

Je pense que mon htaccess est faux et qu'il ne redirige pas automatiquement vers mon index donc il cherche des répertoires inexistant Smiley ohwell

Merci à tous
Modifié par mini-truc (06 Feb 2014 - 14:10)
Je viens d'activer le module sur le serveur.

Quand je fait
print_r(apache_get_modules());


Je retrouve bien mod_rewrite.

Seulement maintenant, j'ai une erreur de type 500 Internal Server Error. Cette erreur provient de mon .htaccess ; car lorsque je le vide plus d'erreur.

Je viens donc je modifier mon .htaccess comme cela :
<IfModule mod_rewrite.c>
    RewriteEngine On
</IfModule>


Donc erreur 500 ; ce que j'ai pu lire sur les forums ; c'est que cette erreur pourrait être dû à ce que mon serveur ne "soit pas capable" de traiter du rewriting... Qu'est ce que je peux faire dans ce cas ?
Modifié par mini-truc (05 Feb 2014 - 16:14)
J'ai réussi à avoir accès au log ; voici ce qu'il en retourne :

.htaccess: RewriteEngine not allowed here


Ce que j'ai pu voir sur le web ; c'est que le problème pourrait venir du allowoverride ; en effet il est à "options".

J'ai donc éditer mon .htaccess en lui ajoutant au début :

<Directory>
    Options FollowSymLinks
    AllowOverride All
</Directory>


Mais toujours rien Smiley ohwell j'aimerais éviter de passer mon allowoverride à all ; est ce possible ?