nath70 Posté 4 Mai 2006 Posté 4 Mai 2006 Bonjour, La page index de mon site se divise en plusieurs include sous le model des pseudo frames. L'include principale qui gére le contenu avec un système de "case". Voici le début du code qui est bcp plus long évidement mais je vous évite le complet ;-) : <?php if (!isset($_GET['page'])) $page= 'index'; else $page= $_GET['page']; switch($page){case 'index': include ('accueil.php');break;case 'dernières-photos':include ('photos/phdernieres.php');break;case 'photo-sanimaux1':include ('photos/phanimaux1.php');break;?> je voudrais modifier le code php pour que mes pages aient l'extension htm avec éventuellement un fichier .htaccess à la racine du site afin d'avoir une url du style : www.lesiteenquestion.com/photos-animaux1.htm au lieu de : www.lesiteenquestion.com/index.php?page=photos-animaux1 Je crois qu'il faut modifier le code php des "case" au maximum afin d'utiliser le moin possible le fichier .htaccess si j'ai bien compris ;-) merci de votre aide
dièse Posté 4 Mai 2006 Posté 4 Mai 2006 Bonjour, La réécriture des urls ne concernent que les urls . les include php sont complétement invisible pour le client web. Une fois ton fichier htaccess en place, tu devras juste modifier les appels d'url sur les pages de ton site. Ainsi au lieu d'avoir dans ton code html "www.lesiteenquestion.com/index.php?page=photos-animaux1" tu auras un lien vers "www.lesiteenquestion.com/photos-animaux1.htm". Ton serveur Apache se chargera de traduire cette nouvelle url et tu pourras donc travailler avec la variable page dans ton code php.
nath70 Posté 4 Mai 2006 Auteur Posté 4 Mai 2006 (modifié) Merci pour ta réponse dièse j'ai fais comme tu as dis, j'ai changé les liens mais du coté du htaccess je crois que c'est pas bon RewriteEngine onRewriteRule ^/([a-z-]+)-\.htm$ index.php?page=$1 [L] je crois que je suis pas très loin du but mais je tourne en rond quand meme Modifié 4 Mai 2006 par nath70
yep Posté 4 Mai 2006 Posté 4 Mai 2006 (modifié) c'est normal. Dans ta condition ([a-z-]+) tu oublies de passer un nombre, de ce fait, ta page www.lesiteenquestion.com/photos-animaux1.htm ne remplie pas cette condition. Essaye avec ([a-z0-9-]+) et le flag [NC,L] (NC pour que la casse soit insensible : minuscule ou majuscule acceptée) Modifié 4 Mai 2006 par yep
nath70 Posté 4 Mai 2006 Auteur Posté 4 Mai 2006 mais il y a un problème je crois : dans mon menu j'ai ceci : <a href="index.php?page=photos-animaux1" title="Animaux1">Animaux1</a> je suis obligé puisque mes pages sont incluses dans la page d'index mais quand je tape l'url dans le navigateur comme ceci : www.lesiteenquestion.com/photo-animaux1.htm j'ai erreur 404 si je tape : www.lesiteenquestion.com/index.php?page=photos-animaux1 évidement ça fonctionne Donc y a un truc qui m'échappe. excusez mais j'ai du mal là
captain_torche Posté 4 Mai 2006 Posté 4 Mai 2006 Soit tu as fait une faute te frappe, soit ton lien n'est pas correct. L'url fonctionnant est photos-animaux1, donc il faut également appeler le 's' dans la forme en .htm
nath70 Posté 4 Mai 2006 Auteur Posté 4 Mai 2006 oui la faute de frappe est ici mais pas dans les liens sur le site ;-) je résume alors : dans mon menu : <a href="index.php?page=photos-animaux1" title="Animaux1">Animaux1</a> dans mon case : <?php if (!isset($_GET['page'])) $page= 'index'; else $page= $_GET['page']; switch($page){case 'index': include ('accueil.php');break;case 'dernières-photos':include ('photos/phdernieres.php');break;case 'photo-sanimaux1':include ('photos/phanimaux1.php');break;?> dans le .htaccess: RewriteEngine onRewriteRule ^([a-z0-9-]+)-\.htm$ /index.php?page=$1 [NC,L] si je tape : http://www.lesiteenquestion.com/index.php?page=photos-animaux1 la page s'affiche si je tape : http://www.lesiteenquestion.com/photos-animaux1.htm voilà le résultat: Not Found The requested URL /photos-animaux1.htm was not found on this server.
Dan Posté 4 Mai 2006 Posté 4 Mai 2006 Enlève le ^ au début de ta règle. Il est possible, voire même probable, qu'un slash '/' soit transmis... RewriteRule ([a-z0-9-]+)\.htm$ index.php?page=$1 [NC,L] Et le / devant index.php n'est utile que si ton site est hébergé sur un mutualisé OVH... pas autrement. Dan
nath70 Posté 4 Mai 2006 Auteur Posté 4 Mai 2006 (modifié) Oui DAn, j'ai copié collé ton code donc sans le ^ et ça marche pas non plus. (Je suis chez ovh start1G donc mutualisé il me semble) Donc j'ai testé avec / ou sans c'est idem tjr ereur 404 :-( Modifié 4 Mai 2006 par nath70
Dan Posté 4 Mai 2006 Posté 4 Mai 2006 Il y avait un - de trop dans mon code... et dans le tien aussi d'ailleurs. Refais un essai
nath70 Posté 4 Mai 2006 Auteur Posté 4 Mai 2006 (modifié) BINGO !!! non j'ai crié trop vite ça m'affiche ma page index pas ma page photos-animaux1 RewriteEngine onRewriteRule ([a-z0-9]+)\.htm$ /index.php?page=$1 [NC,L] Modifié 4 Mai 2006 par nath70
Dan Posté 4 Mai 2006 Posté 4 Mai 2006 Edite le fichier index.php pour qu'il affiche la variable $_GET['page'] Manifestement elle n'est pas correctement positionnée. Mets cette ligne au début de index.php die($_GET['page']); et ensuite appelle ta page photos-animaux1.htm Dis-nous ce que ça t'affiche
nath70 Posté 4 Mai 2006 Auteur Posté 4 Mai 2006 Héhé c'est bon cette fois-ci. J'ai fais comme tu ma dit, j'ai renommer convenablement tous les liens en décalant et maintenant ça fonctionne très bien. Je t'offre quoi une bonne bière belge ou un pastaga ? ;-) merci à la prochaine ...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant