Non Résolu

Lien vers sujets de forum via HTACCESS

Helloooo...je suis de retour et tenais à refaire un spécial STAND-UP au SITE du DEV !! 🍺🦀😍🙏🥳


Si tous mes profs avaient été comme toi...j'aurai fait polytechnique + HEC avec un doctorat en médecine...

Mais ce n'est pas le cas...du coup je bloque sur un point : la redirection via mon htaccess ne fonctionne pas : 😆


Du moins, les extensions ".php" sont bien supprimées mais :

  • la fin n'est pas renommée dans l'URL
  • je n'arrive pas à afficher la liste de mes topics de forum (cela donne l'erreur 404 vers le lien https://nomdedomaine.com/forum/1 ou https://nomdedomaine.com/forum/2 )


Voici mon .htaccess

AddDefaultCharset "utf-8"
#Acces
<Files .htaccess>
    order allow,deny
    deny from all
</Files>
#NTP
SetEnv TZ Europe/Paris

Options All -Indexes

## METTRE PAR DEFAUT L'AFFICHAGE
<FilesMatch "\.(htm|html|css|js|php)$">
    AddDefaultCharset UTF-8
    DefaultLanguage fr-fr
</FilesMatch>

## POUR REECRIRE LES NOMS DES PAGES
Options +FollowSymlinks -MultiViews

# On autorise de renommer les pages
RewriteEngine on
#RewriteBase /

#RewriteCond %{REQUEST_FILENAME} !-f

# On peut enlever le .php et renommer les pages comme on le souhaite
RewriteRule ^([^\.]+)$ $1.php
# On réécrit notre URL et on met [0-9]+ car on sait que dans $1 on aura que des chiffres
#RewriteRule ^voir-profil/([0-9]+)$ $voir_profil?id=$1  [L]

## Redirection non-www vers www:
#RewriteCond %{HTTP_HOST} !^www\. [NC]
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
 
## Pour réécrire les noms des pages
Options +FollowSymlinks -MultiViews
RewriteEngine on
#RewriteBase /
 
## Redirection non-www vers www:
#RewriteCond %{HTTP_HOST} !^www\. [NC]
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
 
## Redirection de http vers https:
#RewriteCond %{HTTPS} off
#RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
 
## Sauf répertoire, supprimez la barre oblique
#RewriteEngine On
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^([^/]+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
 
## Rediriger les pages .php vers une URL sans extension
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://%{HTTP_HOST}/$1 [R=301,L]
 
## Ajouter une extension si le fichier php existe
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

# On r��crit notre URL et on met [0-9]+ car on sait que dans $1 on aura que des chiffres
RewriteRule ^voir-profil/([0-9]+)$ $voir_profil?id=$1  
RewriteRule ^forum$ dossier/forum/forum
RewriteRule ^forum/([0-9]+)$ dossier/forum/sujet?id=$1
RewriteRule ^forum/([0-9]+)/([0-9]+)$ dossier/forum/topic?id_forum=$1&id_topic=$2 [L]

# PAGES DE LA RACINE

RewriteRule ^signup$                                       inscription
RewriteRule ^login$                                          connexion
RewriteRule ^logout$                                        deconnexion

RewriteRule ^accueil$                                    index
RewriteRule ^rechercher$                                   particuliers
RewriteRule ^professionnels$                             professionnels
RewriteRule ^associations$                               associations


Dans le dossier web racine j'ai ma page avec la liste des forums qui est selon ce chemin /dossier/forum/forum.php

Ma base de donnée basededonnee a les mêmes paramètres que dans la formation 1 sitedude. J'ai juste renommé les tables en tables part_forum, part_profil, part_relation, part_topic, part_topic_commentaire..Etc


Voici le code du dossier forum_particulier.php

<?php
    session_start();

    include('../../bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD


    $req = $DB->query("SELECT *
        FROM part_forum
        ORDER BY ordre");

    $req = $req->fetchAll();
?>

<!DOCTYPE html>
<html>
    <head>
        <base href="/"/>
        <meta charset="utf-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
        <title>Accueil</title>
        <!--https://getbootstrap.com/docs/5.1/getting-started/introduction/ -->
        <link rel="stylesheet" href="../../css/bootstrap.min.css">
        <link rel="stylesheet" href="../../css/style.css">
    </head>

    <body>
      <?php
        require_once('../../menu.php');
      ?>
        <div class="container">
            <div class="row">   

                <div class="col-sm-0 col-md-0 col-lg-0"></div>
                <div class="col-sm-12 col-md-12 col-lg-12">
                    <h1 style="text-align: center">Forum</h1>

                    <!--classe Bootstrap pour rendre le tableau responsive -->
                    <div class="table-responsive" style="margin-top: 10px">
                        <table class="table table-striped">
                            <tr>
                                <th>ID</th>
                                <th>Titre</th>
                            </tr>
                        <?php
                            foreach($req as $r){
                            ?>  
                                <tr>
                                    <td>
                                        <?= $r['id'] ?>
                                    </td>
                                    <td>
                                        <!-- On pointe vers le lien du sujet concerné -->
                                        <a href="forum/<?=$r['id'] ?>"><?= $r['titre'] ?> </a>
                                    </td>

                                </tr>   
                            <?php
                            }
                        ?>
                        </table>                    
                    </div>
                </div>
            </div>
        </div>

        <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
        <script src="../js/bootstrap.min.js"></script>
    </body>
</html>


Voici le code du dossier sujet.php

<?php
    session_start();

    include('../../bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD

    //Get permet de récupérer des éléments sur les URL
    $get_id = (int) trim(htmlentities($_GET['id'])); // On récupère l'id de la catégorie

    if(empty($get_id)){ // On vérifie qu'on a bien un id sinon on redirige vers la page forum
        header('Location: ../forum');
        exit;
    }
    // On va récupérer toutes les informations des sujets, mettre les dates au format 'Le 24/04/2018 à 21h32'
        // et ajouter les prénoms des personnes qui ont créé leur sujet
    $req = $DB->query("SELECT t.*, DATE_FORMAT(t.date_creation, 'Le %d/%m/%Y à %H\h%i') as date_c, U.prenom
        FROM part_profil T
        LEFT JOIN part_profil U ON U.id = T.id_user
        WHERE t.id_forum = ?
        ORDER BY t.date_creation DESC",
        array($get_id));

    $req = $req->fetchAll();
?>

<!DOCTYPE html>
<html>
    <head>
        <base href="/"/>
        <meta charset="utf-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
        <title>Sujet</title>
        <link rel="stylesheet" href="../../css/bootstrap.min.css"/>
        <link rel="stylesheet" href="../../css/style.css"/>
    </head>

    <body>
        <?php
            require_once('../../menu.php');    
        ?>

        <div class="container">
            <div class="row">   

                <div class="col-sm-0 col-md-0 col-lg-0"></div>
                <div class="col-sm-12 col-md-12 col-lg-12">
                    <h1 style="text-align: center">Forum</h1>


                    <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){  // Ici on va afficher tous nos enregistrements trouvés
                            ?>  
                                <tr>
                                    <td>
                                        <?= $r['id'] ?>
                                    </td>
                                    <td>
                                        <!-- On met un lien pour afficher le topic en entier -->
                                        <a href="forum/<?= $get_id?>/<?= $r['id']?>"><?= $r['titre'] ?></a>
                                    </td>
                                    <td>
                                        <?= $r['date_c'] ?>
                                    </td>
                                    <td>
                                        <?= $r['prenom'] ?>
                                    </td>
                                </tr>   
                            <?php
                            }
                        ?>
                        </table>                    
                    </div>
                </div>
            </div>
        </div>

        <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
        <script src="../js/bootstrap.min.js"></script>
    </body>
</html>


Quelqu'un peut-il m'aider à traiter ce sujet svp ? 🙏


Merci pour la générosité de votre temps 😃, la bonne humeur de vos réponses 🥳 et la qualité de celles-ci 👍😍 ! Vous êtes au TOP !


Questions bonus :

  • Je n'utilise pas www, y a-t-il un intérêt du type "référencement" svp ?
  • Mes pages de menu de Navbar (connexion.php, inscription.php)...etc ne fonctionnent pas en terme de redirection vers un autre nom. Quelqu'un a-t-il une idée à ce sujet svp ?
393 vues
16 septembre 2021 à 10:13 (Édité)
Cette pub permet au site de vivre ...

Commentaire

Cette pub permet au site de vivre ...