Tutoriel Vidéo PHP : L'URL Rewriting

Dans ce tutoriel vidéo vous apprendrez à utiliser l'URL Rewriting pour modifier les URL de votre site afin d'améliorer le référencement de votre site


Télécharger la vidéo
(Réservé aux premiums)


Après avoir appris sur Internet quoi de plus normal que de partager à son tour ? Passionné par le web depuis un peu plus de 5 ans maintenant j'aime partager mes compétences et mes découvertes avec les personnes qui ont cette même passion pour le web : Vous.

Vous aimerez aussi

Les namespaces

Les namespaces
12m

Dans ce tutoriel vidéo vous apprendrez à utiliser les namespace ou...

API LastFM

API LastFM
35m

Dans ce tutoriel vidéo vous apprendrez comment utiliser l'API de...

65 commentaires
Ajouter un commentaire

Benjamin.D Il y a 2 mois Répondre

Un super tutoriel ! Vraiment très pratique !

laulau35 Il y a 2 mois Répondre

Bonjour
pour 1&1 voici le contenu du fichier :
AddType x-mapp-php5 .php .php3 .php4 .htm .html
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9\-]*).html$ index.php?p=$1 [L]

par contre, il fonctionne bien sous Firefox, IE 9 mais PAS sur IE 8,
si quelqu'un avait la solution, je suis preneur.

yadsama Il y a 2 mois Répondre

slt, chez moi url rewriting marche bien en localhost mais ne marche sur mon hébergement 1and1

Jujudjé06 Il y a 3 mois Répondre

Bonjour et merci pour tous ces tutos !

Concernant les chemins relatifs, j'utilise un fichier "_base_href.php" dans lequel je met la balise base_href, puis indique le root path. J'inclu ce fichier dans toputes mes pages dans les balises <head>.

Cette technique me semble pratique pour le changement de dossier du site, ou tout simplement le transfert du site en local vers le serveur distant.

De ce fait, je change seulement le fichier "_base_href.php", et non tous les liens de toutes les pages...

Au passage, je rajoute toujours dans le .htaccess la ligne "Options -Multiviews".
Je ne sais pas si cela est correct, mais ça marche super de mon coté...

J'espère que cette remarque aidera quelqu'un

Joe Il y a 5 mois Répondre

Merci pour votre tuto très instructif.
Cependant, que faire pour un utilisateur qui taperait http://lesite.com/produit/
Perso, celà me génère une erreur lié à la règle -Indexes, impossibilité de parcourir le dossier (qui n'existe pas d'ailleurs). J'ai bien tenté une redirection, sans succès...

mody49 Il y a 6 mois Répondre

merci pour le tuto

shikyo Il y a 8 mois Répondre

Très bon tutoriel! Merci beaucoup :D

mmedini Il y a 9 mois Répondre

Salut, j'ai voulu savoir si on peut donner en variable La RewriteBase, ça veut dire, au lieu de mettre le nom de dossier en dur, on mettra le nom de domaine????

lion24 Il y a 9 mois Répondre

Salut Grafikart,

Tout d'abord merci encore pour cet excellent tutoriel.
Le système marche très bien seulement voilà quand je rajoute l'extension du fichier dans l'url du site il m'affiche uniquement le fichier sans rien inclure d'autre.
Comment empêcher cela...

J'espère avoir été clair
Bonne continuation...

kinderw Il y a 9 mois Répondre

Bonjour , j'avais suivie ton tutoriel sur : décomposer son site en php , et après j'ai tenter d'appliquer ( a la suite du reste ) dans le htacces ce que tu a mit dans ce turoriel .
voila ce sa donne en plus de décomposer son site en php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]
RewriteRule connexion/([0-9]+) connexion?action=$1

PS : Je ne suis pas chez free .

Spootnick Il y a 10 mois Répondre

Pour ceux qui ont une difficulté pour créer un fichier .htaccess sous Windows, il suffit d'ouvrir l'invite de commande et de tapez ceci:

echo >c:\.htaccess

le fichier sera enregistrer sur la racine C: dans cette exemple.
Voila

abouwone Il y a 10 mois Répondre

Merci pour ce tuto

Orsam Il y a 11 mois Répondre

Bonjour à tous,

J'ai un petit problème avec mon Rewriting j'espère que quelqu'un pourra m'aider. Je m'explique : je redirige toutes les pages vers un seul fichier (pour mon MVC) avec ceci :

RewriteRule ^([a-zA-Z0-9\-\_\/]*).php$ index.php

cela fonctionne très bien, le seul problème c'est cette redirection s'applique à tous les répertoires de mon site, alors que je ne veux toucher que la racine. J'ai bien essayé "RewriteBase /", mais rien n'y fait. Par contre cela fonction si je met un fichier .htaccess dans chacun des répertoires de mon site avec dedans "RewriteEngine off", mais cela ne me convient pas.

Pouvez vous m'aider ?

Merci d'avance.

Orsam

Awadanp Il y a 1 an Répondre

Salut à tous, Joyeux fête à tous

Comment l'utiliser dans une architecture MVC parce que je galère un peu moi à vrai dire...

Merci d'avance

californie Il y a 1 an Répondre

Bonjour, en terme de référencement, est ce que cette technique empêche le duplicate content, où faut il rajouter du code ? merci par avance

win Il y a 1 an Répondre

bonjour,

voila j'ai un problème au niveau de mon id_cat qui ne passe pas dans mon url rewriting.
dans mon htaccess :

RewriteEngine On
RewriteRule categorie/([a-zA-Z0-9\-]+)-([0-9]+) categorie.php?urlcatrew=$1&cat=$2

et quand je vais sur ma page catégorie ex: categorie/jeux-25

mon id_cat "25" arrive pas à passer.

j'ai testé ca : $cat = $_GET["cat"] ; print_r($_GET);

il me met Array ( )

si je me met avec la page categorie.php?cat=25
il me met Array ( [cat] => 25 )

alors pourquoi il ne veut pas passer mon id de la cat ?

merci de votre aide
win

Dylan Il y a 1 an Répondre

J'ai trouvé une petite astuce plutôt que de créer une colonne URL qui faut remplir une par une, c'est de faire passer le titre dans l'url en remplaçant les espaces par des tirets et de mettre en minuscule:

$url = $data['titre'];
$url = strtolower($url);
$url = str_replace(" ", "-", $url);
?>
<h2><a href="<?php echo $url; ?>-<?php echo $data['id']; ?>.html"><?php echo $data['titre']; ?></a></h2>

Et ça c'est tout simplement hyper pratique !!

Dhsik Il y a 2 ans Répondre

J'ai trouver un mien : à la place de :
RewriteRule blog/([A-Za-z0-9]+)-([0-9]+) index.php?id_cat=$2

Mettez :
RewriteRule /([A-Za-z0-9]+)-([0-9]+) index.php?id_cat=$2

Dhsik Il y a 2 ans Répondre

Moi mon problème, c'est que la variable $_GET['cat_id'] n'apparaît plus après la mise en place de l'url rewriting (j''ai print_r sa me renvoie un tableau vide...).

Mon petit .htaccess :

RewriteEngine On
RewriteRule blog index.php
RewriteRule blog/([A-Za-z0-9]+)-([0-9]+) index.php?id_cat=$2

si quelqu'un peut m'aider...

P.S: Grafikart tu as appris touts sa où ?

Jamoo Il y a 2 ans Répondre

Bonjour, excellent ce tutorial Grafikart, il m'a bien aidé.
Cependant, j'ai une requête à te faire. L'affichage de l'id dans l'url (nom-du-produit-id) rewrité est il absolument nécessaire ou je pourrais (comme je le souhaite) le faire disparaitre ? Si oui, comment le faire ?

Merci d'avance.

Rafael Il y a 2 ans Répondre

J'ai pas fini le tutoriel car il m'affiche une erreur 500 des que je met le fichier .htaccess dans le dossier

Ditch Il y a 2 ans Répondre

Bonjour,
je voulais savoir si l url rewriting n existe que pour les sites dynamiques...
http://www.creassion.net

F4talytiX Il y a 2 ans Répondre

Je te remercie fortement pour ce tutoriel qui m'a enfin permis de comprendre !

J'ai ri au "URL sexy" x)

Oneil Il y a 2 ans Répondre

Vraiment grandiose!

Merci beaucoup pour ce super tuto!

Jutix Il y a 2 ans Répondre

Merci!

Faudrait que je m'y mette =)

Cécile Il y a 2 ans Répondre

super tuto ! très clair et concis, maintenant je peux dire que j'ai compris l'URL rewriting :p

pampa Il y a 2 ans Répondre

bonsoir !
c'est mon premier commentaire ici malgré le fait que tu sois dans mes favoris depuis un bon moment. T'es vraiment un maitre en la matière ! Félicitation et merci pour le partage de tes connaissances.
Bon je galère un peu beaucoup à le mettre en place mais je vais bien y arriver un jour ou l'autre !
merci encore.

3db Il y a 2 ans Répondre

if(isset($p) && preg_match("/^[a-z0-9]+$/i",$p)) {
if(file_exists("page/$p.php")) {
include "page/$p.php";
} elseif (file_exists("page/contact/$p.php")){
include "page/contact/$p.php";

j'ai réussi avec un seul répertoire, seul problème comment faire si on a plusieurs

Grafikart Il y a 2 ans - Répondre

Si tu en as plusieurs tu fait plusieurs elseif

3db Il y a 2 ans Répondre

Salut, tuto très intéressant, comment faire pour les pages qui sont dans un répertoire ?
ex : Pages/Contact merci

Grafikart Il y a 2 ans - Répondre

A toi d'adapter ce tutoriel à tes besoins

MajinVejita Il y a 2 ans Répondre

Bonjour et merci pour ce tutoriel.

Je rencontre néanmoins un problème que je n'arrive pas à résoudre.

Voici donc mes règles d'écritures qui servent d'exemples pour illustrer mon problème :

RewriteRule ^test/([0-9]+)$ test.php?id=$1
RewriteRule ^autre/([0-9]+)$ test.php?id=$1


En tapant "autre/26" par exemple, l'url est bien réecrit(e) en "test.php?id=26". Par contre, en tapant "test/26" j'ai droit à une belle erreur 404.

Pour résumer, des qu"une règle de réecriture est de la forme : "RewriteRule ^([a-z]+)/([0-9]+)$ $1.php?id=$2" par exemple, plus rien ne fonctionne.

Quelqu'un pourrait-il m'aider ? (j'espère avoir été assez clair)

Vinz Il y a 2 ans Répondre

Salut et merci !
J'ai un petit problème :
J'arrive a faire un RewriteRule avec l'expression régulière :
^([a-z]+)$
mais pas avec :
^(.*)$
j'aimerais pouvoir faire passer n'importe quoi dans l'url pour pouvoir gerer mes messages d'erreurs.

url rewriting sur son site Il y a 2 ans Répondre

Merci pour le tuto sur l'url rewriting.

Leo Il y a 2 ans Répondre

Bonjour,

Tout d'abord merci pour ces tutos super bien fait. Mais j'ai un problème avec celui-ci. J'ai un système de news ou j'ai réécrit mes url et cela fonctionne mais l'articvle affiché est vide. Je fais un test avec if(isset($_GET['id'])) avant d'afficher mes articles. J'ai l'impression que le $_GET['id']) ne renvoi plus rien avec l'url réécrite... Avez vous une solution car je suis planté depuis deux heures.

Mon fichier .htacces

RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9\-]+)([0-9]+) /new.php?id=$2

Grafikart Il y a 2 ans

Essai de faire un print_r($_GET) pour voir les variables qui passent et peut être identifier l'erreur.

Leo Il y a 2 ans

Merci pour ta réponse. En fait, avec le print_r, je m'aperçois que mon id est transformée. L'id de l'article est 217 et print_r m'affiche id==>7 une fois que j'ai cliqué sur lire la suite. Et ainsi de suite l'id du second article est 216 et print_r m'affiche id==>6

:-(

La j'avoue ne pas trop savoir...

Grafikart Il y a 2 ans - Répondre

a mon avis la règle d'écriture n'est pas bonne. tu as bien mis ([0-9]+) à la fin ,?

DjawadShow Il y a 2 ans Répondre

Bonsoir a tous
merci bcp pour le tutoriel mais il y'a un détail que j'arrive pas a comprendre.
d'après ce que j'ai compris si la racine de mon site est TUTO, donc pour que ma page s'affiche bien avec son CSS je dois mètre des lien en absolu.
maintenant je veux uploader mon site dans un serveur distant, sachant que je vais uploader seulement le contenu de TUTO. dans ce cas je pense qu'il ne va pas reconnaitre l'emplacement des fichier CSS ??? ai je raisons ou pas ??
Merci

Grafikart Il y a 2 ans

Si l'url change sur ton serveur il faudra effectivement réécrire les liens qui sont en absolut.

Djawadshow Il y a 2 ans - Répondre

Alors SVP qu'elle est la meilleur solutions

toogy Il y a 2 ans Répondre

Merci, très utile.

tel Il y a 2 ans Répondre

hello

juste pour dire que sur les sites qui ne proposent pas d'url rewriting il faut utiliser la page 404 pour faire le role du .htaccess

voili voilou

M e h d i Il y a 2 ans Répondre

Merci

@rnaud ! Il y a 2 ans Répondre

Yes supers tuto bravo!

Syl20 Il y a 2 ans Répondre

Merci c'est super !

M e h d ! Il y a 2 ans Répondre

BOnjour, pour l'incrementation :
$i++ rajoute 1 à cette variable, mais comment faire pour modifier 1 ?
comment avec l'incrementation, rajouter 0.1 par exemple ?

Grafikart Il y a 2 ans - Répondre

Si tu veux incrémenter de 0.1 il te faudra écrire $i+=$i+0.1

BIPBIP Il y a 2 ans Répondre

Merci pour ton travail

benn Il y a 2 ans Répondre

bonjour
génial le tuto , juste que y'a un problème avec la vidéo,
j'arrive pas à voir la fin!!
et pourtant j'ai 512kb/s!
est ce normal?
merci.

Dimix Il y a 2 ans Répondre

Très bon tutoriel

Jelley Il y a 3 ans Répondre

Hello Super tuto! tu m'as sauvé la vie plus d'une fois avec d'autre tuto mais celui la me pose quelque problème... si tu penses que tu peux m'aider essaye de me contacter par mail stp =)

Encore merci et super tuto!

Jo

Syl20 Il y a 3 ans Répondre

Encore un tuto très intéressant !

Toogy Il y a 3 ans Répondre

Salut c'est Toogy. (je sais pas si tu te souviens de moi ^^) Merci de mettre des tutos gratuits c'est tout à ton honneur.

ilyesn Il y a 3 ans Répondre

Merci .:! L Y E S !:. mais c'est bon j'ai trouver cela venez d'où d'un script javascript.
Et merci pour ce tuto même si je suis héberger sur free est donc impossible à utilisé.

Bartimeus Il y a 3 ans Répondre

l'antislash n'est pas nécessaire devant un - dans une expression régulière, il suffit de mettre le - juste avant le ]

.:! L Y E S !:. Il y a 3 ans Répondre

Merci Graf' pour le tuto, tu connaitrai pas un plugin pour Wordpress qui fait ça ?

@cerise: Tu joue pas à Counter Strike par hasard xP ?

@ilyesn: Hey t'as presque le même nom que moi :D, pour ton problème, la meilleur solution serait de passer à Linux, si tu sais pas ce que c'est, voila un http://www.siteduzero.com/tutoriel-3-12827-reprenez-le-controle-avec-linux.html pour un très bon tutoriel. (Ça m'agace que Grafikart est sur un certain OS nommé Windows... :/ )

Bonne journée.

--
L Y 3 S

ilyesn Il y a 3 ans Répondre

Besoin d'aide, désolé pour le Hors sujet.
Tous les 2 jours mon antivirus affiche que les pages index (ma page principale et mes pages qui se trouvent dans un dossiers) de mon site on un virus "HTML/FRAMER". Lorsque je désactive l'antivirus . Mon site a un margin-top élevé. Et donc est décaler vers le bas.
Pour y remédier je re-upload mes pages index.
Mais la, j'en ai marre de cette technique.
Est ce que vous avez la solution ?
Je suis héberger chez free.

http://opluffy.free.fr/

N4vros Il y a 3 ans Répondre

Très bon tuto bien expliqué je l'attendais depuis un petit moment ^^

Flomito Il y a 3 ans Répondre

Je connaissais déjà mais merci. Tu fait vraiment des bon tutoriels et je t'en remercie.

Flomito

Sixte Il y a 3 ans Répondre

on peut utiliser cette technique sur les forums pour que notre signature change tout les jours (ou à chaque rechargements) :
si le forum en question autorise le html, on fait un lien vers notre site sur une page du genre url-de-mon-site/repertoire/image.jpg évidement image.jpg n'existe pas et on crée une règle de réécriture pour rediriger vers image.php et la en fonction de la date du jour ou d'une fonction random on renvoi grâce à la fonction header(location:XXX) l'url de l'image voulue

cerise Il y a 3 ans Répondre

Je suis vraiment contente de voir ce tuto
Un grand merci pour le partage
cerise

Galdon Il y a 3 ans Répondre

Roh merci, c'est très utile pour le référencement et l'ergonomie.

Philippe Il y a 3 ans Répondre

bonjour!!! super tuto, encore un grand merci.

IceSpy Il y a 3 ans Répondre

Que dieu soit bénis ^^
Ca fait un petit moment que je galère avec ^^

Babou Il y a 3 ans Répondre

Super tuto, merci à toi
Tu avais aussi fais un tuto semblable à celui-ci, sauf qu'il n'y avait pas la BDD http://www.grafikart.fr/tutoriels/video/decomposer-site-php-31 :p

Je demande aussi au passage à propos du tuto "Décomposer un site en php", comment faire lorsqu'on a plusieurs parti, par exemple dans l'index on a les liens accueil et contact, et dans la partie portfolio on a les liens images, vidéo.

Harry Il y a 2 ans - Répondre

Heu c'est pas du tout le même genre de tuto U_x

Sinon pour ta question tu peux faire index.php?p=portfolio&c=images en faisant la même manip que pour $p =)

Fraize Il y a 3 ans Répondre

génial génial génial,
merci beaucoup !

marmotte Il y a 3 ans Répondre

merci beaucoup pour ce tuto
justement, je suis en stage dev ^^

yann Il y a 3 ans Répondre

merci merci

leknoppix Il y a 3 ans Répondre

Je n'ai pas regardé encore ton tuto a cause de ma connection internet de merde. Chez free, vu qu'il y a beaucoup de jeune developpeur, les urls rewriting ne fonctionne pas. Cependant, il y a une possibilité de simuler les url rewriting. Voici un tuto que j'ai rédigé il y a quelques temps et qui explique comment faire:
http://www.leknoppix.fr/article/les_urls_rewritings/index.html

@Grafikart: Si le lien pose problème, n'hésite pas à le supprimer.

Amine Il y a 3 ans Répondre

merci .. Spuer tuto .

Weby Il y a 3 ans Répondre

Super intéressant, merci !

Mixta Il y a 3 ans Répondre

Merci pour ce nouveau tuto vidéo

Laisser un commentaire

Si vous avez une question il est conseillé d'utiliser le forum si vous voulez une réponse sûre.