Rediriger tout sauf la page index dans un site en MVC

Nouveau WRInaute
Bonjour à tous,

Voilà, je vient demander votre aide car je vient de finir mon site PHP en architecture MVC et je voudrais rediriger toutes les pages vers mon dossier controller sauf la page index. J'ai déja obtenur le code suivant :
Code:
RewriteEngine on
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ controller/$1.php

Je voudrais savoir ce que je dois rajouter pour qu'il ne redirige pas la page index.php .
Sur le siteduzero, on ma juste dit que c'est rewritecond qu'il faut utiliser mais je ne m'y connais pas du tout en url rewriting.

En remerciant d'avance tout ceux qui vont m'aider,

ARAGORN
 
WRInaute discret
bonjour

testé ce code :

Code:
RewriteCond %{REQUEST_URI} !index.php$
RewriteRule (.*) http://www.nomdesite.com/controller/$1 [QSA,R=301,L]
 
Nouveau WRInaute
Bonsoir,

J'ai testé et obtenur le .htaccess suivant :
Code:
RewriteCond %{REQUEST_URI} !index.php$
RewriteRule (.*) http://www.nomdesite.com/controller/$1.php [QSA,R=301,L]

Je tape l'adresse de mon site sans mettre index.php et j'obtiens ceci : http://www.lolcalhost/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/controller/.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php
 
WRInaute occasionnel
Pourquoi ne dis tu simplement pas à ta page index de faire le boulot du htacess ?
Tu seras plus modulable...

Pour chaque page tu dois avoir un contrôleur ?
Le but du découpage et de reprendre n'importe quel contenu n'importe ou.... non ?

Je me trompe peu être :$
 
Nouveau WRInaute
-Romu- a dit:
Pourquoi ne dis tu simplement pas à ta page index de faire le boulot du htacess ?
Tu seras plus modulable...

Pour chaque page tu dois avoir un contrôleur ?
Le but du découpage et de reprendre n'importe quel contenu n'importe ou.... non ?

Je me trompe peu être :$

Salut,

Le problème c'est que si l'utilisateur demande directement la page www.nomdusite.com/membre/connexion , la page index n'a aucun effet d'où l'utilité du .htaccess mais comme je ne maitrise pas l'URL rewriting, je pose la question sur le forum ;)
 
WRInaute accro
Ca dépend la façon de lire les paramètres de la route :
Les 3 premières lignes dans tous les cas :
Code:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
 
###QUERY_STRING
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
 
###REQUEST_URI
#RewriteRule ^(.*)$ index.php [QSA,L]
 
###PATH_INFO
#RewriteRule ^(.*)$ index.php/$1 [QSA,L]
 
###GET
#RewriteRule ^(.*)$ index.php?url=/$1 [QSA,L]
 
Nouveau WRInaute
Bonjour,

Moi je veut tout rediger vers mon dossier controller sauf la page index, ce que vous m'avez donnez ne me correspond pas. Si je remplace index.php/$1 par controller/$1, ma page index sera t'elle redirigé quand l'utilisateur demandra www.nomdusite.com ?
 
WRInaute occasionnel
En toute logique sa plantera....
Tu veux toujours un $1...
Si tu es a la racine, sa n'existe plus...

Au pire, tu rediriges tout vers index.php qui gére tes contrôleurs...
 
Nouveau WRInaute
Ok je veut bien te croire que ça va planter mais explique moi pourquoi car quand quelqu'un tape dans sa barre www.nomdusite.com/membre/connexion, le .htaccess prend le membre/connexion et redirige dans le dossier controller et rajoute.php à la fin pour tomber sur le bon fichier. Si cela peut marcher (et ça marche pour l'instant en locale), je voudrais savoir comment faire pour qu'il ne rediriger pas la page index: c'est ça le but à la base de ce topique ;)

- Sinon, j'ai pas compris ton truc , tu redirige tout vers la page index.php qui s'occupe des controller, tu peut être plus précis stp ..
 
WRInaute occasionnel
C'est simple, tu dis a ton htacess qu'il y a toujours un paramètre $1...
Pour l'index, il est ou ton paramètre ? après je me trompe peut être....


Pour l'index :

URL => monsite.com/astuces/article-5-blabla.html

Le navigateur envoi la requête au serveur
Apache regarde le htacess => Attention, tout dois passer par l'index !!!

=> l'index ? Que me demande t'on ?

Allez dans Astuce ? Ok, ma classe controleur existe ?

Oui, www/....blabla/controleur/astuce.class.php existe !!
OK alors on va regarder si la méthode (function de classe) article existe ?
Oui, elle existe ! avec les paramétres : 5-blabla.html
On veux donc l'article ayant une ID 5 avec le titre blabla.
Il existe ? Oui, On va chercher les info dans la classe modèle (www/....blabla/modele/astuce.class.php), on affiche la vue
 
WRInaute impliqué
Déjà les dossiers m & v doivent pas être accessible, normalement on fait un virtualhost qui pointe le ndd dans le dossier c.

Après je gère tout depuis l'index, c'est comme ça que font tous les CMS et c'est le plus simple ;)
 
Nouveau WRInaute
Merci de vos réponses mais moi je chercher la condition (RewriteCond d'après mais recherche) qui empecherai que la page index soit redirigé. Tout rediriger vers la page index.php?page=$1 me serait inutilse et bousillerai la structure du site. Merci d'avance ;)
 
WRInaute occasionnel
Tout rediriger vers la page index.php?page=$1

On a pas dit index ?

me serait inutilse et bousillerai la structure du site

Justement, si ton site et ton MVC et bien fait...
Tu n'auras aucun problème...car l'index remplace le htacess...
Si la class controleur existe, tu va me la chercher, sinon erreur, sauf si je suis sur le domaine !

Y'a rien de compliquer... Si cette méthode n'est pas bonne, cela veut dire que tout les CMS et FrameWork se sont trompés ?
Oupssssss :lol:
 
Discussions similaires
Haut