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 :

Redirection vers index.php


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 499
    Billets dans le blog
    1
    Par défaut Redirection vers index.php
    Bonjour,

    Je développe en local donc je peux donner du code mais pas de lien. L'architecture est le MVC.
    Le principe est de rediriger toutes les urls vers index.php.
    Le fichier .htaccess placé à la racine contient cette règle :
    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^.*$ /index.php [QSA,L]

    Puis index.php analyse l’URL et appelle le bon controller
    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
    $request_uri = mb_strtolower($_SERVER['REQUEST_URI']);
    // analyse du path
    $path = parse_url($request_uri, PHP_URL_PATH);
     
    if ($path === false) {
        echo 'URL malformée';
        exit;
    }
     
    // remove the first slash
    $path = mb_substr($path, 1);
    $parts = explode('/', $path);
     
    include 'config/routing.php';
    $ctrl_name = getController($path);
     
    $ctrl->invoke();
    Mon souci est que la redirection vers index.php ne se fait pas.
    Comment corriger cela ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 499
    Billets dans le blog
    1
    Par défaut
    Je maîtrise mal les .htaccess. Peut on m'expliquer pourquoi il n'y a pas de message d'erreur dans les logs alors que la redirection ne s'effectue pas ? Pour vérifier qu'on ne passe pas dans index.php après avoir cliqué sur un des liens, j'ai rajouté ce code en début de index.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Récupère l'URL demandée
    $request_uri = $_SERVER['REQUEST_URI'] ?? '';
    if (strpos($request_uri, 'choix1') !== false)  //le lien sur lequel je fais le test comporte choix1 dans l'URL
    {
        die("DEBUG: Le lien /choix1 a bien appelé index.php ! URL complète : " . $request_uri);
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  3. #3
    Invité de passage
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Par défaut
    Bonjour, il y à longtemps que je n'ai plus fait de .htaccess, je pense qu'il faut des parenthèse pour identifier la zone de capture. Soit
    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ index.php [QSA,L]

    PS : j'espère que ce n'est pas la seule ligne qu'il y a dans ton .htaccess, car cela ne fonctionnera pas ainsi.

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 410
    Par défaut
    Salut à tous.

    Est-ce que ton .htaccess est activé ?
    Dans ton VirtualHost, tu dois avoir : "AllowOverride All".
    Comme tu utilises "RewriteRule", tu dois avoir dans Apache, le module "mod_rewrite" chargé.
    Et bien sûr, tu dois avoir "RewriteEngine On", sinon cela ne fonctionnera pas.

    Tu dis que tu es en local, dans ce cas, il ne faut pas mettre le "/" juste avant index.php :
    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^.*$ index.php [QSA,L]

    Il faut aussi éviter la réécriture infinie. Ta règle réécrit index.php vers index.php.
    Dans ce cas, il faut exclure les fichiers existants :
    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteEngine On
     
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
     
    RewriteRule ^ index.php [QSA,L]

    Tu ne nous a pas expliqué ce que tu tapes dans ton navigateur comme adresse url ?
    Comment se nomme ton fichier local que tu testes ?
    Comment gères tu ton sous-dossier ?

    Pour vérifier si l'accès se fait bien, ajoute dans ton fichier "index.php" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var_dump($_SERVER['REQUEST_URI']);
    exit;
    Si cela ne s'affiche pas alors ta redirection ne fonctionne pas.

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 499
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    je suis encore avec mon problème.
    Artemus, je sais que la redirection ne fonctionne pas.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Récupère l'URL demandée (code rajouté en tête de index.php et le lien sur lequel je fais mon test comporte "choix1")
    request_uri = $_SERVER['REQUEST_URI'] ?? '';
    if (strpos($request_uri, 'choix1') !== false) {
        die("DEBUG: Le lien /choix1 a bien appelé index.php ! URL complète : " . $request_uri);

    .htaccess :
    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    RewriteCond %{REQUEST_URI} !^/index.php$
    RewriteCond %{REQUEST_URI} !^/assets/.*$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^.* /index.php [QSA,L]
    </IfModule>

    virtualhost :
    Code apache : 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
     
    <VirtualHost *:80>
        DocumentRoot "C:/projets/todolist/"
        ServerName dev.todolist.fr
        ErrorLog "logs/todolist_errors.log"
        CustomLog "logs/todolist_access.log" common
    	RewriteEngine on
    	RewriteCond %{REQUEST_URI} /(index)(\..{3,4})?$ [NC]
    	RewriteCond %{REQUEST_URI} !^/assets/.*$
        #RewriteRule ^.*$ /index.php [QSA,L]
    	#RewriteRule . /index.php [QSA,L]
     
    	RewriteRule ^.* /index.php [QSA,L]
    	#RewriteRule . /index.php [QSA,L]
     
    	<Directory "C:/projets/todolist/">
    		Options Indexes Includes FollowSymLinks MultiViews
    		AllowOverride None
    		Require all granted
    	</Directory>
    </VirtualHost>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 499
    Billets dans le blog
    1
    Par défaut
    C'est réglé : .htaccess supprimé et virtualhost :
    Code apache : 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
    <VirtualHost *:80>
        DocumentRoot "C:/projets/todolist/"
        ServerName dev.todolist.fr
        ErrorLog "logs/todolist_errors.log"
        CustomLog "logs/todolist_access.log" common
    	RewriteEngine on
    	RewriteCond %{REQUEST_URI} /(index)|(home)(\..{3,4})?$ [NC]
    	RewriteRule ^.* http://dev.todolistfr [R=301,L]
    	RewriteCond %{REQUEST_FILENAME} !^/assets/.*$
    	RewriteRule . /index.php [QSA,L]
    	<Directory "C:/projets/todolist/">
    		Options Indexes Includes FollowSymLinks MultiViews
    		AllowOverride None
    		Require all granted
    	</Directory>
    </VirtualHost>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Redirection * requêtes vers index.php
    Par UneMinute22 dans le forum Apache
    Réponses: 1
    Dernier message: 09/01/2021, 02h19
  2. redirection 301 vers index.php via Rewriterule
    Par gambic dans le forum Apache
    Réponses: 6
    Dernier message: 12/06/2012, 15h26
  3. redirection de index.php vers racine
    Par redah75 dans le forum Référencement
    Réponses: 4
    Dernier message: 10/05/2012, 14h15
  4. un message d'accueil puis redirection vers index.php avec clic
    Par agnaou dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 18/06/2009, 19h37
  5. Réponses: 2
    Dernier message: 29/10/2005, 18h15

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