Question niveau débutant

WRInaute discret
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:
 
Nouveau WRInaute
Bonsoir,

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

Code:
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:
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:
  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 :!:
 
WRInaute accro
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:
RewriteCond %{REQUEST_URI} !^index\.html$
RewriteCond %{REQUEST_URI} !^contact\.html$
RewriteRule ^(.*)\.html$ /page.php?titre=$1 [L]
 
WRInaute discret
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:
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? :?
 
Discussions similaires
Haut