Url rewriting , htaccess problème

Url rewriting , htaccess problème - PHP - Programmation

Marsh Posté le 23-12-2010 à 23:27:06    

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 .

Reply

Marsh Posté le 23-12-2010 à 23:27:06   

Reply

Marsh Posté le 24-12-2010 à 08:29:07    

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


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 24-12-2010 à 11:20:56    

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)
Reply

Marsh Posté le 24-12-2010 à 20:07:46    

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']." ) !

Reply

Marsh Posté le 24-12-2010 à 20:14:31    

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  

Reply

Marsh Posté le 24-12-2010 à 22:47:13    

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)
Reply

Marsh Posté le 30-12-2010 à 23:18:55    

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)
Reply

Marsh Posté le 31-12-2010 à 09:26:16    

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)
Reply

Marsh Posté le 31-12-2010 à 19:58:34    

Oui ! C'est comme taper dans un cache !


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

Marsh Posté le 31-12-2010 à 20:12:30    

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)
Reply

Marsh Posté le 31-12-2010 à 20:12:30   

Reply

Marsh Posté le 01-01-2011 à 21:25:15    

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)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed