Url rewriting , htaccess problème - PHP - Programmation
Marsh Posté le 24-12-2010 à 08:29:07
Rien compris...
Pourquoi tu fous l'ID si tu le veux pas ?
Marsh Posté le 24-12-2010 à 11:20:56
bahia_25 a écrit : Bonjour, |
AMHA c'est impossible
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>
Marsh Posté le 24-12-2010 à 20:07:46
Dj YeLL a écrit : Rien compris... |
c'est l'id qui me permet de recuperer mon article via une requette sql ( where id = ".$_GET['id']." ) !
Marsh Posté le 24-12-2010 à 20:14:31
philippe06 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
Marsh Posté le 24-12-2010 à 22:47:13
bahia_25 a écrit : |
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 :
|
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.
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 !
Marsh Posté le 31-12-2010 à 09:26:16
en termes de performances, un fichier plat fonctionne mieux qu'une BDD?
Marsh Posté le 31-12-2010 à 19:58:34
ReplyMarsh Posté le 31-12-2010 à 20:12:30
Donc le fichier est chargé intégralement en mémoire?
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
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 .