Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1815 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Url rewriting , htaccess problème

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Url rewriting , htaccess problème

n°2044155
bahia_25
Posté le 23-12-2010 à 23:27:06  profilanswer
 

Bonjour,  
 
 
Voici mon "problème":  
 
j'ai fait la réécriture de liens pour mon site web, les urls sont au format suivant :  
 
www.monsite.com/55-article-exemple.html  
 
a la place de :  
 
www.monsite.com/detail.php?id=55  
 
 
Ce que je veux vraiment c'est enlever l'id des urls, j'aurai comme résultat:  
 
www.monsite.com/article-exemple.html  
 
 
note : "article-exemple" c'est le champ titre dans ma table dans la base de données.  
note : je veux pas utiliser le titre comme id !  
 
 
Voici mon fichier .htaccess:  
RewriteEngine On  
RewriteRule ^([0-9]+)-(.+).html$ detail.php?id=$1  
 
 
 
j'espère que j'aurai une réponse et merci d'avance .

mood
Publicité
Posté le 23-12-2010 à 23:27:06  profilanswer
 

n°2044173
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-12-2010 à 08:29:07  profilanswer
 

Rien compris...
 
Pourquoi tu fous l'ID si tu le veux pas ? :??:


---------------
Gamertag: CoteBlack YeLL
n°2044251
philippe06
Posté le 24-12-2010 à 11:20:56  profilanswer
 

bahia_25 a écrit :

Bonjour,  
 
 
Voici mon "problème":  
 
j'ai fait la réécriture de liens pour mon site web, les urls sont au format suivant :  
 
www.monsite.com/55-article-exemple.html  
 
a la place de :  
 
www.monsite.com/detail.php?id=55  
 
 
Ce que je veux vraiment c'est enlever l'id des urls, j'aurai comme résultat: www.monsite.com/article-exemple.html
 
 
note : "article-exemple" c'est le champ titre dans ma table dans la base de données.  
note : je veux pas utiliser le titre comme id !
 
 
Voici mon fichier .htaccess:  
RewriteEngine On  
RewriteRule ^([0-9]+)-(.+).html$ detail.php?id=$1  
 
 
 
j'espère que j'aurai une réponse et merci d'avance .


AMHA c'est impossible  [:sonken]  
 
Je vois pas comment apache pourrait deviner que:
-article-exemple.html est associé avec www.monsite.com/detail.php?id=55  
-article-trucmuche est associé avec www.monsite.com/detail.php?id=56
 
Ou alors faut utiliser le titre comme ID ... un plugin Wordpress permet de faire ça.
 
Le contenu du htaccess est le suivant:
 
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /truc/wordpress/
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /truc/wordpress/index.php [L]
</IfModule>


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
n°2044323
bahia_25
Posté le 24-12-2010 à 20:07:46  profilanswer
 

Dj YeLL a écrit :

Rien compris...
 
Pourquoi tu fous l'ID si tu le veux pas ? :??:


 
c'est l'id qui me permet de recuperer mon article via une requette sql ( where id = ".$_GET['id']." ) !

n°2044324
bahia_25
Posté le 24-12-2010 à 20:14:31  profilanswer
 

philippe06 a écrit :


AMHA c'est impossible  [:sonken]  
 
Je vois pas comment apache pourrait deviner que:
-article-exemple.html est associé avec www.monsite.com/detail.php?id=55  
-article-trucmuche est associé avec www.monsite.com/detail.php?id=56
 
Ou alors faut utiliser le titre comme ID ... un plugin Wordpress permet de faire ça.
 
Le contenu du htaccess est le suivant:
 
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /truc/wordpress/
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /truc/wordpress/index.php [L]
</IfModule>


 
Merci pour la réponse philippe,
 
Voila je veux pas utiliser le titre comme id puisque ma table contient des milliers d’enregistrements et l'affichage prendra beaucoup de temps si je parcours ma table par le titre.
 
sinon j'ai pas bien compris l'htaccess que tu a écris.
 
Merci  

n°2044326
philippe06
Posté le 24-12-2010 à 22:47:13  profilanswer
 

bahia_25 a écrit :


 
Merci pour la réponse philippe,
 
Voila je veux pas utiliser le titre comme id puisque ma table contient des milliers d’enregistrements et l'affichage prendra beaucoup de temps si je parcours ma table par le titre.
 
sinon j'ai pas bien compris l'htaccess que tu a écris.
 
Merci


L'affichage ne prendra pas forcement beaucoup de temps, à condition:
-de faire une recherche exacte (titre='machin' et non titre LIKE '%machin%')
-de placer un index sur le champ titre
-tu peux également "cacher" les requêtes en mémoire, mais tu n'en as pas forcement la possibilité dans un environnement mutualisé. Sinon je t'invite à te documenter sur memcached/APC / le moteur MEMORY de MySQL.
 
Sinon tu as aussi une "astuce" que j'ai utilisé à cette fin:
-tu fais un petit programme qui génère des fichiers plats du style article-exemple.html (ou article-exemple.php, par exemple)

Code :
  1. <?php
  2. /*TAG_ARTICLE_AUTOGEN*/
  3. $_GET['id']=5;
  4. require('detail.php');
  5. ?>


par contre c'est embêtant quand tu dois supprimer un article, il faut maintenir effacer le fichier. Idem si tu décides de mettre des '_' à la place des '-' comme espace.


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
n°2045268
CyberDenix
Posté le 30-12-2010 à 23:18:55  profilanswer
 

Regarde du côté de la directive rewrite map.
 
C'est un fichier texte que tu balances en réponse à un certain type d'url (donc une règle de réécriture).
 
Dans ce fichier, en fonction de ce qui est capturé, tu mets en face la bonne url. Bien entendu, ce le fichier est à générer périodiquement pour être à jour.
 
Cette solution est utilisée par Twenga sur une bonne partie de son site web, notamment les hôtels. Plus d'ids = site plus joli !


---------------
Directeur Technique (CTO)
n°2045296
philippe06
Posté le 31-12-2010 à 09:26:16  profilanswer
 

en termes de performances, un fichier plat fonctionne mieux qu'une BDD?


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
n°2045439
CyberDenix
Posté le 31-12-2010 à 19:58:34  profilanswer
 

Oui ! C'est comme taper dans un cache !


---------------
Directeur Technique (CTO)
n°2045440
philippe06
Posté le 31-12-2010 à 20:12:30  profilanswer
 

Donc le fichier est chargé intégralement en mémoire?


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
mood
Publicité
Posté le 31-12-2010 à 20:12:30  profilanswer
 

n°2045507
CyberDenix
Posté le 01-01-2011 à 21:25:15  profilanswer
 

Pour le rewite map en version texte, je pense que cela dépend de l'utilisation ou non d'un .htaccess (comme pour les rewrites).
 
.htaccess -> pas mis en mémoire (lent), mais lu à chaque fois (dynamique)
pas de .htaccess-> mis en mémoire (rapide), mais besoin de relancer Apache pour prendre en compte le nouveau fichier (statique)
 
Ce n'est là qu'une supposition... A confirmer !
 
Même si ce fichier n'est pas placé en mémoire, un cache fichier reste plus perf qu'une requête SQL :)


Message édité par CyberDenix le 01-01-2011 à 21:26:39

---------------
Directeur Technique (CTO)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Url rewriting , htaccess problème

 

Sujets relatifs
[VBS/XML] probleme de CDATAProbleme rafraichissement
problème avec "display"Problème pour créer la requête SQL demandée
Problème Caroussel Infinite JqueryProblème programme c
Probleme de variable (corrigé)[VBS] Probleme utilisation Type
Problème boutons radio fonction javascript[URL Rewriting] Problème de .htaccess sous Apache 2 ...
Plus de sujets relatifs à : Url rewriting , htaccess problème


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR