Question niveau débutant

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics


Juho_05
WRInaute discret
WRInaute discret
 
Messages: 92
Inscription: Sam Avr 22, 2006 15:51

Question niveau débutant

Message le Ven Avr 20, 2007 1:54

Bonjour, j'ai une page page.php qui accepte comme variable "titre" dans l'adresse.

J'ai donc des liens sous la forme

./page.php?titre=un_titre

Je souhaite les réécrire sous la forme

./un_titre.html

Quel est le code au niveau du htaccess pour que les urls un_titre.html soient comprises comme si elles étaient serie.php?serie=un_titre et comment intérdire de référencer les autres?

Merci d'avance, soyez indulgents je débute :lol:


thieuthieu
Nouveau WRInaute
 
Messages: 31
Inscription: Lun Juil 17, 2006 12:50

Message le Ven Avr 20, 2007 2:44

Bonsoir,

Tout d'abord, voici le fichier .htaccess à adopter :

Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^(.*)\.html$ /serie.php?serie=$1&rw=1 [L]


Attention, cette redirection est un peu risquée car elle redirigera absolument tous les fichiers .html ! Je te conseille plutôt d'adopter une convention telle que :
serie-**.html :arrow: serie.php?titre=** ou quelque chose comme ça.

Dans ce cas :

Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^serie-(.*)\.html$ /serie.php?serie=$1&rw=1 [L]


Ensuite, pour ne pas référencer les pages .php, il suffit de vérifier si ($rw == 1) : si ce n'est pas le cas, tu fais une redirection 301 vers la page rewritée. Tu peux par exemple utiliser cette fonction :

Code: Tout sélectionner
  function redirect($rw, $location)
  {
    if ($rw!=1)
    {
      header("HTTP/1.1 301 Moved Permanently");
      header ('location: '.$location.'.html');
      header("Connection: close");
    }
    return true;
  } 


Voilà, en espérant t'avoir aidé... bonne nuit :!:
Dernière édition par thieuthieu le Ven Avr 20, 2007 13:49, édité 1 fois.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3338
Inscription: Mar Nov 16, 2004 18:27

Message le Ven Avr 20, 2007 8:38

Comme le dit thieuthieu ton expression va tout prendre, aussi le fichier index.html ; Donc avec le code ci dessous, les 2 premiers lignes sont des conditions pour te permettre de gerer les exceptions.

Par exemple :
La premiere ligne dit : "Si la page est differente de index.html"
La seconde ligne dit : "Si la page est differente de contact.html"
La derniere ligne fait la réécriture.


Code: Tout sélectionner
RewriteCond %{REQUEST_URI} !^index\.html$
RewriteCond %{REQUEST_URI} !^contact\.html$
RewriteRule ^(.*)\.html$ /page.php?titre=$1 [L]


Juho_05
WRInaute discret
WRInaute discret
 
Messages: 92
Inscription: Sam Avr 22, 2006 15:51

Message le Ven Avr 20, 2007 11:17

Merci à tous deux pour votre aide, vous m'avez appris un truc très utile. ;)

Je vais tester tout ca ;)


Juho_05
WRInaute discret
WRInaute discret
 
Messages: 92
Inscription: Sam Avr 22, 2006 15:51

Message le Ven Avr 20, 2007 11:37

Bon, j'ai un problème.

J'ai modifié la liste de mes liens, ils sont maintenant sous la forme

./serie-une_serie.html

J'ai mis ce code .htaccess :

Code: Tout sélectionner
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^serie-(.*)\.html$ /serie.php?serie=$1 [L]


Mais ca ne marche pas, j'obtiens une 404... D'ou vient le bug? :?


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités