Aller au contenu

Sujets conseillés

Posté

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 :whistling:

Posté

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.

Posté (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 on
RewriteRule ^/([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é par nath70
Posté (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é par yep
Posté

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à

Posté

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

Posté

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 on
RewriteRule ^([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.

Posté

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

Posté (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é par nath70
Posté

Il y avait un - de trop dans mon code... et dans le tien aussi d'ailleurs.

Refais un essai :)

Posté (modifié)

BINGO !!! non j'ai crié trop vite

ça m'affiche ma page index pas ma page photos-animaux1

RewriteEngine on
RewriteRule ([a-z0-9]+)\.htm$  /index.php?page=$1 [NC,L]

Modifié par nath70
Posté

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

Posté

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 ...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...