IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

URL Rewriting par .htaccess [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Points : 1 128
    Points
    1 128
    Par défaut URL Rewriting par .htaccess
    Bonjour,

    Je souhaite réecrire l'url de redirection (pour un MVC) en utilisant un fichier .htaccess
    J'ai essayé les solutions suivantes, mais aucune ne fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    RewriteEngine On
    #RewriteRule ^(.*)$ index.php?p=$1 [L]
    #RewriteRule ^(.*)$ $1.php [L] 
    RewriteRule ^(.*)$ index.php?p=$1 [QSA,L] 
    #RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1
    #RewriteRule ^(.*)$ index.php?p=$1
    Dans mon fichier index.php, j'ai ceci :
    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
     
    define("WEBROOT", str_replace("index.php", '', $_SERVER['SCRIPT_NAME']));
    define("ROOT", str_replace("index.php", '', $_SERVER['SCRIPT_FILENAME']));
    require_once ROOT . 'core/Modele.php';
    require_once ROOT . 'core/Controleur.php';
    require_once 'core/dbconnect.php';
     
    $db = DBConnect::getBDD(); // on se connecte à la Base de données
    //echo $_SERVER['SCRIPT_NAME']; // /cinegestion/index.php
    //echo '</br>';
    //echo $_SERVER['SCRIPT_FILENAME']; // /mod/www/cinegestion/index.php
    //echo ROOT; // /mod/www/cinegestion/
    echo '</br>';
    //echo WEBROOT; // /cinegestion/
    if (isset($_GET['p'])) {
        $params = explode('/',$_GET['p']);
        print_r($params);
    }

    l'URL du site : http://localhost/cinegestion/index.php?p=index

    Voici ce que j'obtiens à l'affichage
    alors que je devrais obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Array
    (
    [0] => cinegestion // le controleur
    [1] => index // la vue
    )
    Merci d'avance.
    Transact.

  2. #2
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Ce qu'il te renvoie est ce que tu lui a demandé.

    Ta règle de réécriture d'url prends un paramètre contenant n'importe quoi et le renvoie à la page index.php en le nommant 'p'.
    Donc : http://localhost/cinegestion/index.php?p=index renvoie bien index.

    Pourquoi irait t'il t'écrire cinegestion ? Si tucréer une page, par exemple toto.php, sans la réécriture d'url et que tu fait un die(var_dump($_GET)) tu aura un array vide.

    Maintenant si tu veux récupérer cinegestion tu peux te dirige vers la variable $_SERVER

  3. #3
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Points : 1 128
    Points
    1 128
    Par défaut
    En mettant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset($_SERVER)) {
        $params = explode('/',$_SERVER['SCRIPT_NAME']);
        var_dump($params);
    }
    j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => [1] => cinegestion [2] => index.php )
    Ce qui est bien, mais j'aurai souhaité ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => cinegestion [1] => index.php )
    que la première case du tableau soit cinegestion et pas une chaine vide.

  4. #4
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Non ça ne va pas.

    Tu souhaite récupérer le nom de ton contrôleur mais comme tu ne le donne pas en paramètre de ton url tu ne peux pas utiliser $_GET.
    Par contre puisqu'il est présent dans l'url tu peux le récupérer comme tu as fait avec $_SERVER.
    Mais il ne faut pas que tu récupère index.php, en effet ce n'est pas ta vue mais ce sera toujours index.php qui te sera renvoyé ici (nom de la page exécuté).

    Il faut donc que tu récupère ton contrôleur via $_SERVER et ta vue via $_GET.

    Par contre pourquoi vouloir récupérer le nom de ton contrôleur, en fait ce dernier ne change jamais. A mois que tu utilise le même schéma pour plusieurs site ?

    Après rien ne t'empêche de produire ton tableau toi même :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ar_explode_script_name = explode('/',$_SERVER['SCRIPT_NAME']);
    $params = array();
    $params[] = $ar_explode_script_name[1];
    $params[] = $_GET['p'];

  5. #5
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Points : 1 128
    Points
    1 128
    Par défaut
    Résolu
    Merci encore.
    Transact.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/10/2008, 14h38
  2. Réponses: 5
    Dernier message: 27/03/2008, 16h45
  3. [URL Rewriting] mon .htaccess tue mon css
    Par 7studio dans le forum Apache
    Réponses: 1
    Dernier message: 04/01/2008, 19h56
  4. URL Rewrite : par PHP ou par mod_rewrite ?
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 29/06/2006, 11h28
  5. [Apache] URL REWRITING par le .htaccess
    Par d.w.d dans le forum Apache
    Réponses: 1
    Dernier message: 19/04/2006, 20h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo