Question .htaccess
Résolu
doctorpower
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
doctorpower Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
doctorpower Messages postés 7 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
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
A voir également:
- Question .htaccess
- Réécriture d'urls avec .htaccess - Forum Référencement
- Htaccess / htpasswd : comment se déconnecter ? - Forum Webmastering
- Redirection .htaccess invisible... je n'y arrive pas ✓ - Forum Référencement
- [.Htaccess] Redirection vers une autre adresse ✓ - Forum Webmastering
- [Htaccess] Récupérer le login dans ma page... ✓ - Forum Référencement
2 réponses
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 :
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.
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');
}
?>