Problème d'utilisation du fichier ".htaccess"

Par Epeny le 15 Juillet 2020 à 22:09 (Édité) 18 +99

Bonjour à tous,


J'ai un problème avec le fichier .htaccess, j'ai vérifié le fichier .htaccess à l'aide du site https://htaccess.madewithlove.be/#top pour voir s'il y a des erreurs et quand je clique sur le bouton pour tester il y a une erreur qui m'affiche : This rule was not met.


J'ai bien suivi le tutoriel "Supprimer le .php de vos URLs", mais je n'arrive pas à trouver la solution pour régler ce problème.


Merci d'avance pour vos réponse.

Cette pub permet au site de vivre ...

18 commentaires

Re:


Je pense que ce tutoriel et celui-là pourront t'aider 😉

@Clouder,


J'ai ajouté var_dump dans mon code et voici ce que m'affiche sur l'écran du navigateur : array(1) { ["id"]=> string(3) "1/1" }

@Jerem971,


J'ai lu cet article, j'ai ajouté ce code ligne dans la page topic.php pour régler mon problème :


$get_id_forum = isset($_GET['id_forum']) ? $_GET['id_forum'] : NULL;
$get_id_topic = isset($_GET['id_topic']) ? $_GET['id_topic'] : NULL;


Lorsque je redirige vers la page topic.php l'erreur undefined index s'affiche plus sur la page, mais le contenu pour afficher un topic ne s'affiche pas sur cette page. Il n'y a rien qui s'affiche sur la page topic.php


Quand j'efface ce code ligne je n'arrive plus redirigé vers la page topic.php et je reviens directement sur la page forum.php


<?php
echo $get_id_forum;
echo "<br>";
echo $get_id_topic;
exit;


Je n'arrive pas à comprendre pourquoi je ne peux pas récupérer les paramètres id_forum et id_topic, si j'ai réussi à récupérer id lorsque je redirige vers la page sujet.php.

Re:


Cet article pourra t'aider à propos des messages d'erreurs que tu as rencontrés 😉

@Clouder,


J'ai ajouté le code que tu m'as conseillé pour voir si j'ai récupéré id_forum et id_topic.


Lorsque je redirige vers la page topic.php il y a une erreur s'affiche :


Notice: Undefined index: id_forum in C:\xampp\htdocs\EDUTECH\topic.php on line 5

Notice: Undefined index: id_topic in C:\xampp\htdocs\EDUTECH\topic.php on line 6

0

0


C'est-à-dire que je n'ai pas récupéré les 2 paramètres

@Epeny,


D'accord, si tu as une redirection c'est déjà une bonne chose quand tu vas sur la page.

Cela veut dire que tu peux accéder à la page.


Il faudrait que tu débogues par toi même pour voir ce que tu récupères avec un echo et exit


Exemple :


<?php
$get_id_forum = (int) trim(htmlentities($_GET['id_forum']));
$get_id_topic = (int) trim(htmlentities($_GET['id_topic']));

echo $get_id_forum;
echo "<br>";
echo $get_id_topic;
exit;

@Clouder,


Dans la page topic.php j'ai ajouté le code qui permet de récupérer 2 paramètres mais je n'arrive pas toujours à redirige vers la page topic.php:


$get_id_forum = (int) trim(htmlentities($_GET['id_forum']));
$get_id_topic = (int) trim(htmlentities($_GET['id_topic']));


Le code que j'ai mis dans le commentaire précèdent c'était le code de la page sujet.php c'est pour ça j'ai mis cette ligne code


$get_id = (int) trim(htmlentities($_GET['id']));


pour récupérer l'id de la catégorie lorsque je me redirige vers la page sujet.php

@Epeny,


C'est normal... dans ton fichier .htaccess, dans ton code, tu as mis ceci :


RewriteRule ^topic/([0-9]+)/([0-9]+)$ topic?id_forum=$1&id_topic=$2 [L]


Du coup tu attends 1 ou 2 paramètres dans ta page topic.php.

Pour les récupérer il faut faire cela :


$get_id_forum = $_GET['id_forum'];
$get_id_topic = $_GET['id_topic'];


Et non :


$get_id = $_GET['id'];


Pourquoi ?


Car tu as nommé tes 2 paramètres dans ton fichier .htaccess. Donc il faut utiliser les noms que tu as données pour récupérer ces informations 🙂

@Clouder,


Lorsque je clique sur le lien pour rediriger vers la page topic.php, je reviens sur la page forum.php.


Je pense que j'ai mis un mauvais lien pour rediriger vers la page topic.php :


<?php
    session_start();
      include('connexionDB.php');
    $get_id = (int) trim(htmlentities($_GET['id'])); // On récupère l'id de la catégorie
    
    if(!isset($_SESSION['id'])){
        header('Location: connexion.php');
        exit;
    }

    if(empty($get_id)){ // On vérifie qu'on a bien un id sinon on redirige vers la page forum
        header('Location: forum.php');
        exit;
    }

    $afficher_profil = $DB->query("SELECT *
        FROM user
        WHERE id = ?",
    array($_SESSION['id']));
    $afficher_profil = $afficher_profil->fetch();
 
    $req = $DB->query("SELECT *
        FROM topic T
        WHERE id_forum = ?
        ORDER BY date_creation DESC",
        array($get_id));
    $req = $req->fetchAll();
?>
>
<!DOCTYPE html>
<html>
<head>
    <title>Sujet</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="sujet-2.css">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap" rel="stylesheet">
</head>
<body>
    
      <div class="text-center">
          <h6 class="under-title">Sujet</h6>
      </div>
      <div class="container">
          <div class="row">
              <div class="col-0 col-sm-0 col-md-0 col-lg-0"></div>
              <div class="col-12 col-sm-12 col-md-12 col-lg-12">
                  <div class="table-responsive">
                    <table class="table table-striped">
                        <tr>
                            <th>ID</th>
                            <th>Titre</th>
                            <th>Date</th>
                            <!--th>Par</th>-->
                        </tr>
                        <?php
                            foreach($req as $r){
                            ?>  
                            <tr>
                                <td><?= $r['id'] ?></td>
                                <td><a href="topic.php?id=<?= $get_id?>/<?= $r['id']?>"><?= $r['titre'] ?></a></td>
                                <td><?= $r['date_creation'] ?></td>
                                <!--td><?= $r['prenom'] ?></td>-->
                            </tr>   
                            <?php
                            }
                        ?>
                    </table>
                </div>
            </div>
        </div>
    </div>
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
</body>
Cette pub permet au site de vivre ...