Question .htaccess

Résolu
doctorpower Messages postés 360 Date d'inscription   Statut Membre Dernière intervention   -  
doctorpower Messages postés 360 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'aimerai ajouter a certaines URL de mon site des variables "inutiles" par exemple:

site.com/185/partie-inutile-de-l-url

au lieu de:

site.com/185

dans mon fichier .htacces j'ai essayer:

RewriteRule ^id/([0-9]+)/([0-9a-zA-Z]-_/....)$ ............

au lieu de:

RewriteRule ^id/([0-9]+)$ ..............

mais ca ne fonctionne pas...

je pense que c'est possible etant donne que seule l'id est importante (185 dans l'exemple) mais je ne sais pas comment faire...

merci d'avance

2 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut.

Je pense qu'il faut mettre tous les caractères dans la classe de caractères (entre crochets).

Si c'est pour mettre le titre de la page dans l'URL, il faut quand même utiliser la variable afin de vérifier que le titre soit correcte (en fonction de l'ID de l'article ou de la news). Par exemple :
RewriteRule ^articles/([0-9]+)/(.+)$ lire_article.php?id=$1&titre_url=$2


Dans lire_article.php, récupère le titre au format URL depuis la base de données grâce à l'ID ($_GET['id']).
Ensuite, vérifie que ce que tu as récupéré correspond à $_GET['titre_url'] : si non, alors fait une redirection.

<?php
if(isset($_GET['id']) && isset($_GET['titre_url'])) {
    $pdo = new PDO('mysql:host=localhost;dbname=la_base','root','');

    $sql = 'SELECT COUNT(*) AS nb FROM articles WHERE id = '.(int) $_GET['id'];
    $req = $pdo->query($sql);
    $req->closeCursor();
    $data = $req->fetch();

    if($data['nb'] > 0) {
        $sql = 'SELECT * FROM articles WHERE id = '.(int) $_GET['id'];
        $req = $pdo->query($sql);
        $article = $req->fetch(PDO::FETCH_OBJ);

        if($article->titre_url == $_GET['titre_url']) {
            include 'templates/lire_article.php';
        } else {
            header('Location: /articles/'.$_GET['id'].'/'.$article->titre_url);
            header('HTTP/1.1 301 Moved Permanently');
            header('Status: 301 Moved Permanently');
        }
    } else {
        header('Location: erreur-404.php');
        header('HTTP/1.1 404 Not Found');
        header('Status: 404 Not Found');
    }
} else {
    header('Location: erreur-404.php');
    header('HTTP/1.1 404 Not Found');
    header('Status: 404 Not Found');
}
?>
1
doctorpower Messages postés 360 Date d'inscription   Statut Membre Dernière intervention   68
 
merci avion f-16, j'essaye ca tout de suite
0