|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2006 Messages : 54 ![]() |
Bonjour,
J'essaye en vain d'utiliser l'url rewriting sur mon site web. J'aimerais réécrire les adresses simplement, si possible en insérant les mots clés de mes news dans l'adresse de la page "detail.php" sur la barre d'adresse (je ne sais pas comment faire ça). J'aimerais aussi ne pas avoir à modifier les liens dans mes fichiers php, si un fichier htaccess suffit c'est génial! Je suis hébergé par "bluehost". Mon acharnement vise à transformer les types d'adresses suivantes: index.php?page=2 index.php?page=2&tri=asc index.php?page=2&tri=desc index.php?stat=comment index.php?page=2&stat=comment index.php?stat=like index.php?page=2&stat=like detail.php?news=22 account.php?pseudo=Yopla Voici la tête de mon fichier .htaccess: Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : août 2005 Messages : 8 285 ![]() |
A part le fait qu'il faut décommenter (activer) les règles, je ne vois pas de problème. C'est quoi le souci ?
Pour la modification des liens dans les pages, c'est dommage, va falloir que tu t'y mettes
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#3 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2006 Messages : 54 ![]() |
Merci pour ta réponse. Je vais exposer mon problème par étapes.
Le scénario est le suivant: J'ai une page index.php qui regroupe plusieurs news. En bas de la page, il y a des numéros de page pour voir les news plus anciennes. Toujours sur cette page d'index, on peut trier les news suivant le nombre de commentaires qu'elles ont reçues, ou bien le nombre de "like". A l'heure actuelle, quand je clique sur les liens de page en bas de "index.php", je tombe sur la deuxième page: index-2.html . Si je clique sur le lien "1", je tombe sur index-1.html. Parfait. Ca se corse quand je clique sur le lien "Les plus commentées". En faisant ça, je tombe sur "index-stat-comment.html". Parfait et ça marche indéfiniment. Je vais en bas de page, je clique sur le lien pour me rendre à la page 2 et je tombe sur "index-2-comment.html". Toujours parfait. Le problème, c'est que si je clique maintenant sur le lien 1 pour retomber sur la première page (contenant les news les plus commentées), je tombe sur: index-1.html au lieu de index-1-comment.html! Ca doit être une histoire de $_GET qui m'échappe complètement. Pouvez-vous m'aider? Pour info le htaccess actuel: Code :
Code :
|
||||
|
|
00
|
|
|
#4 | ||
![]() ![]() Inscription : août 2005 Messages : 8 285 ![]() |
Ce que je vais dire n'a peut-être aucun rapport avec le problème car je n'ai pas lu le code PHP mais il y a un "problème de conception" avec le .htaccess. Les lignes en cause :
Code :
Pour le problème des 2 règles avec le même filtre, je te laisse nous expliquer la raison et dire comment construire des filtres plus précis.
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
||
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2006 Messages : 54 ![]() |
Merci pour tes conseils, ça a résolu mes problèmes!
J'ai presque terminé l'url rewriting mais pour la page des catégories il y a un plantage (call to a function fetch on a non object). L'url de départ est du style: categorie.php?name=Vid%26eacute%3Bos Je pense que c'est le nom de la catégorie que le fichier htaccess ne reconnait pas. Une idée? Ah oui aussi, j'aimerais que l'internaute ne voie jamais index.php mais plutôt qu'il voie www.monsite.com et je cherche une solution à implémenter dans le htaccess sans devoir indiquer www.monsite.com car le site que je développe pourra servir à d'autres et j'essaye de dépersonnaliser le code. |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : août 2005 Messages : 8 285 ![]() |
Rien compris à ton histoire de catégorie : où est-ce que tu parles de catégorie dans tout ce qui précède ? C'est quoi l'URL demandée et pourquoi dis-tu qu'Apache ne reconnaît pas le nom de la catégorie ?
Je ne comprends pas non plus la seconde question : où est-ce que le visiteur voit index.php dans l'URL ?
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#7 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2006 Messages : 54 ![]() |
J'avais oublié de le préciser, mais sur mon site il y a aussi des catégories de news (des sections): vidéos,musique,... et donc quand je clique sur le lien "vidéos" je tombe sur la page section.php?name=Vid%26eacute%3Bos
Je veux la réécrire à l'aide du .htaccess pour obtenir ce type d'url: http://www.monsite.com/section-name-...cute%3Bos.html Pour ce faire, j'insère la ligne: Code :
RewriteRule ^section-name-(.*)\.html$ /section.php?name=$1 [QSA,L] Citation:
Code :
Pour passer les noms des catégories via l'URL j'encode les chaînes de caractères en UTF8 ce qui transforme les accents et supprime les espaces et c'est toujours reconvertissable en la chaine d'origine. Je n'arrivais pas à faire fonctionner les htmlentities()... Pour la seconde question, quand un visiteur se rend sur mon site il voit www.monsite.com/index.php Je voudrais qu'il ne voie que www.monsite.com, qu'il ne sache pas que c'est fait en php. C'est plus clair maintenant? Merci! |
|||
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : août 2005 Messages : 8 285 ![]() |
Il faut savoir deux choses :
En revanche, côté Apache, ce qu'il faut c'est que la bonne URL avec %E9 (/section-name-Vid%E9os.html) renvoie le bon résultat.
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2006 Messages : 54 ![]() |
Merci beaucoup pour ta réponse
Pourrais-tu me donner des conseils sur les fonctions à utiliser dans l'ordre pour encoder le nom de la catégorie de news en BDD et puis ce qu'il faut faire pour décoder et transmettre le nom par un $_GET, et enfin comment retraiter ce nom du $_GET pour le comparer au nom stocké en BDD et ainsi récupérer toutes les news dont l'id correspond au nom qu'on cherche. J'ai vraiment cherché mais je patauge avec les htmlentities,addslashes,utf8 encode, urlencode etc. Merci beaucoup |
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : août 2005 Messages : 8 285 ![]() |
A la limite, pour calculer les URL (le <a href>), je ne ferais rien du tout : je récupèrerais ce qu'il y a en base de données directement pour construire l'URL sans l'encodée. C'est le navigateur qui se chargera ensuite d'encoder "comme il faut". Au pire, il ne faut utiliser que urlencode.
En fait, il faut que tu stockes en base de données la donnée non encodée (avec un é) ou nettoyée (tu remplaces les é par des e, etc.) pour s'affranchir des problèmes d'encodage. Ce qu'il faut ensuite c'est s'assurer partout (base de données, encodage des fichiers PHP, content type renvoyé par le serveur, code HTML) que tu utilises ne même encodage. Comme ça, tu t'affranchiras des risques de transcodage pour passer d'un encodage à un autre. Si tu dois faire des bricoles pour emboîter dans un ordre bien précis les fonctions que tu cites, tu vas trop loin.
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#11 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2006 Messages : 54 ![]() |
Salut,
Merci Avec l'url rewriting j'obtiens un lien "a href" de la catégorie: www.monsite.com/section-name-%E9t%E9+am%E8re+d%5C%27ao%FBt.html Dis-moi si ça te semble bon. Les news s'affichent bien dans la catégorie voulue. Ps: la catégorie de l'exemple est "été amère d'août", ne veut rien dire mais c'est pour les accents. Par contre après avoir récupéré le lien de la catégorie par $_GET (et passé à urlencode()) j'ai vu /// que j'ai dû supprimer de la chaîne par deux stripslashes successifs: Code PHP :
Ce /// est une énigme pour moi |
||
|
|
00
|
|
|
#12 | |
![]() ![]() Inscription : août 2005 Messages : 8 285 ![]() |
Citation:
Moi aussi. Logiquement, tu ne devrais pas avoir besoin d'urldecode : que vaut $_GET['name'] ?
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
|
00
|
|
|
#13 | |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2006 Messages : 54 ![]() |
Salut,
C'est bizarre, j'ai accès aux différentes catégories sur le site en ligne (donc par ex http://www.monsite.com/categorie-%E9...%27ao%FBt.html) mais ça ne fonctionne pas en local dès qu'il y a des accents! (mais www.monsite.com/categorie-maison+blanche.html fonctionne en local avec Wampserver). Rewrite rule est activé dans les paramètres Apache. J'aimerais vraiment avoir un accès local car pour le moment je tombe sur une erreur 403: Citation:
string(19) "été amère d\\\'août" Merci pour ton aide EDIT 27 juillet: Le problème est résolu En tout cas un tout grand merci pour ton aide |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com