<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Archives des url rewriting - La programmation sur le web</title>
	<atom:link href="https://programmation.surleweb-france.fr/tag/url-rewriting/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmation.surleweb-france.fr/tag/url-rewriting/</link>
	<description>La programmation gratuite pour tous</description>
	<lastBuildDate>Sat, 05 Mar 2022 18:00:17 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/08/cropped-19518430-icone-de-programmation-pour-votre-site-web-mobile-presentation-et-conception-de-logo-gratuit-vectoriel.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Archives des url rewriting - La programmation sur le web</title>
	<link>https://programmation.surleweb-france.fr/tag/url-rewriting/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">176210735</site>	<item>
		<title>PHP, l&#8217;url rewriting</title>
		<link>https://programmation.surleweb-france.fr/php-url-rewriting/</link>
					<comments>https://programmation.surleweb-france.fr/php-url-rewriting/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Wed, 20 May 2020 17:00:00 +0000</pubDate>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[développement]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[référencement]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[url rewriting]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=410</guid>

					<description><![CDATA[<p>La mise en place de l'url rewriting en PHP est simple et rapide, quelques lignes et te voilà prêt à gagner en lisibilité</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/php-url-rewriting/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/php-url-rewriting/">PHP, l&rsquo;url rewriting</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>L&rsquo;url rewriting peut paraître barbare dans un premier temps mais c&rsquo;est une technique qui est indispensable afin de gagner en visibilité. Une visibilité pas seulement pour les moteurs de recherche qui indexent ton site mais également pour le lecteur. Si l&rsquo;url rewriting (ou la ré-écriture d&rsquo;url) est correctement mise en place, les adresses de chaque page gagneront en clarté.</p>



<h2 class="wp-block-heading">Définition de l&rsquo;url rewriting</h2>



<p>Comme je viens de le dire, l&rsquo;url rewriting est une technique qui permettra de remplacer une URL compliquée à comprendre, par exemple :</p>



<pre class="wp-block-preformatted">https://mon-site.com/index.php?type=p&amp;id=2</pre>



<p>En :</p>



<pre class="wp-block-preformatted">https://mon-site.com/exemple-url-rewriting</pre>



<h2 class="wp-block-heading">Pourquoi mettre en place l&rsquo;url rewriting</h2>



<p>Maintenant que tu as vu quel changement la ré-écriture d&rsquo;url apporte à ton site, pourquoi devrais-tu le mettre en place. Il y a plusieurs raisons :</p>



<ul class="wp-block-list"><li>gagner en lisibilité pour ton visiteur qui verra en un coup d&rsquo;œil dans la barre d&rsquo;adresse, l&rsquo;article qu&rsquo;il est en train de lire</li><li>améliorer le référencement. Les moteurs de recherche indexent les pages que tu publies, aucun de ses moteurs apprécient les url complexes.</li><li>en tant qu&rsquo;administrateur / développeur de ton site, tu pourras garder une hiérarchie dans tes pages et celle-ci sera bien plus stable. La stabilité est très appréciée par les moteurs de recherche</li><li>avoir une vue voire un contrôle sur les mots clés même si l&rsquo;importance de l&rsquo;url rewriting n&rsquo;est pas aussi grande que l&rsquo;on souhaiterai, elle joue un rôle important.</li></ul>



<p>Voici des raisons suffisantes pour mettre en place cette technique sur ton site. Tu peux avoir plus d&rsquo;informations sur ce <a href="https://www.seo.fr/definition/url-rewriting" target="_blank" rel="noreferrer noopener">lien</a>.</p>



<h2 class="wp-block-heading">Comment mettre en place l&rsquo;url rewriting</h2>



<p>En fonction de l&rsquo;hébergement choisi (voir l&rsquo;article sur <a href="https://programmation.surleweb-france.fr/hebergement-local-ou-exterieur/" target="_blank" rel="noreferrer noopener">l&rsquo;hébergement</a>), tu auras plus ou moins le choix. Si tu es sur un serveur dédié, tu peux la mettre en place dans la configuration de ton site directement sur le <a href="https://programmation.surleweb-france.fr/installer-serveur-web-complet/" target="_blank" rel="noreferrer noopener">serveur web</a>. Si tu es un peu plus limité et que tu utilises <a href="https://httpd.apache.org/" target="_blank" rel="noreferrer noopener">Apache</a>, tu peux placer, à la racine de ton site un fichier .htaccess (<a href="https://www.webrankinfo.com/dossiers/techniques/tutoriel-url-rewriting" target="_blank" rel="noreferrer noopener">lien</a>). </p>



<p>Si tu utilise Nginx (une alternative d&rsquo;Apache), je t&rsquo;invite à suivre ce <a href="https://www.nginx.com/blog/creating-nginx-rewrite-rules/" target="_blank" rel="noreferrer noopener">lien</a>.</p>



<p>Tu peux également passer par le PHP (et oui c&rsquo;est étonnant, c&rsquo;est le sujet de l&rsquo;article). D&rsquo;ailleurs, tu vas pouvoir découvrir comment le mettre en place sur un serveur tournant sur Apache.</p>



<p>Des CMS comme WordPress proposent directement la mise en place de la ré-écriture d&rsquo;url :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="1144" height="473" src="https://i2.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/wordpress-permaliens.png?fit=900%2C372&amp;ssl=1" alt="" class="wp-image-430" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/wordpress-permaliens.png?w=1144&amp;ssl=1 1144w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/wordpress-permaliens.png?resize=300%2C124&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/wordpress-permaliens.png?resize=1024%2C423&amp;ssl=1 1024w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/wordpress-permaliens.png?resize=768%2C318&amp;ssl=1 768w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2020/05/wordpress-permaliens.png?resize=150%2C62&amp;ssl=1 150w" sizes="(max-width: 900px) 100vw, 900px" /></figure></div>



<h2 class="wp-block-heading">L&rsquo;url rewriting en PHP sur Apache</h2>



<p>Je ne connais pas suffisamment Nginx pour en décrire le fonctionnement et j&rsquo;en suis désolé mais si tu as des questions, n&rsquo;hésites pas à demander, j&rsquo;en profiterai pour faire quelques recherches.</p>



<p>Tout d&rsquo;abord, nous allons mettre dans le fichier htaccess (à la base de ton site), la redirection de toutes les requêtes vers la page index.</p>



<p>Cela va permettre de pouvoir gérer toutes les url de ton site.</p>



<h3 class="wp-block-heading">Configuration de .htacces</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="apache" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/controleur/*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]</pre>



<h4 class="wp-block-heading">Petites explications</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="apache" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RewriteEngine on</pre>



<p>Ceci active le module de ré-écriture.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="apache" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RewriteBase /</pre>



<p>Cette ligne permet d&rsquo;indiquer la racine du site, en général, la racine du site n&rsquo;est pas la racine du serveur.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="apache" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RewriteCond %{REQUEST_URI} !^/controleur/*</pre>



<p>J&rsquo;ai placé cette ligne pour information, elle permet d&rsquo;exclure un sous-dossier des règles d&rsquo;écriture.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="apache" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RewriteCond %{REQUEST_FILENAME} !-f</pre>



<p>Il s&rsquo;agit d&rsquo;une condition préalable primordiale pour la bonne éxecution de la ré-écriture, elle indique qu&rsquo;il ne s&rsquo;agit pas d&rsquo;un fichier réel.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="apache" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RewriteRule ^(.*)$ index.php [QSA,L]</pre>



<p>Il s&rsquo;agit de la règle qui renvoie les adresses correspondant aux conditions vers la page index. QSA indique que les paramètres sont passés comme arguments.</p>



<p class="has-small-font-size">Les informations ont été, en partie, trouvées sur cette <a rel="noreferrer noopener" href="https://www.scriptol.fr/wordpress/redirection.php" target="_blank">page</a>.</p>



<h3 class="wp-block-heading">Mise en place avec PHP</h3>



<p>Ici, je ne parlerai que de la partie de la gestion des adresses, je n&rsquo;aborderai pas la création d&rsquo;un site complet.</p>



<p>Je vais procéder par étape, à la fin, tu auras le contenu du fichier complet.</p>



<p>Dans un premier temps, tu vas devoir réfléchir sur la construction de tes url.</p>



<p>Une fois que tu as défini la syntaxe, tu devras l&rsquo;inclure dans les regles :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$regles = array( 
    'image'   => "/image/(?'text'[^/]+)/(?'id'\d+)",    // '/image/un-texte/51'
    'album'     => "/album/(?'album'[\w\-]+)",              // '/album/album-slug'
    'categorie'  => "/categorie/(?'categorie'[\w\-]+)",        // '/categorie/categorie-slug'
    'page'      => "/page/(?'page'about|contact)",          // '/page/about', '/page/contact'
    'post'      => "/(?'post'[\w\-]+)",                     // '/post-slug'
    'accueil'      => "/"                                      // '/'
);</pre>



<p>Maintenant, tu vas devoir récupérer l&rsquo;URI qui est demandé (il s&rsquo;agit de l&rsquo;identifiant de ta page), par exemple <em>/image/51</em>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$uri = rtrim( dirname($_SERVER["SCRIPT_NAME"]), '/' );
$uri = '/' . trim( str_replace( $uri, '', $_SERVER['REQUEST_URI'] ), '/' );
$uri = urldecode( $uri );</pre>



<p>A présent, il te reste à déterminer à quelle règle correspond ton uri :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">foreach ( $regles as $action => $regle) {
    if ( preg_match( '~^'.$regle.'$~i', $uri, $params ) ) {
        // Maintenant, tu sais quelle action et les paramètres qui correspondent
    }
}</pre>



<p>Avec ceci, tu devrais obtenir ton fichier <em>index.php</em>, on va rajouter simplement 2 lignes qui permettront :</p>



<ul class="wp-block-list"><li>d&rsquo;arrêter le programme, une fois que la page recherchée est trouvée</li><li>d&rsquo;afficher une page dans le cas où la page demandée n&rsquo;est pas connue</li></ul>



<p>Le fichier final :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$regles= array( 
    'image'   => "/image/(?'text'[^/]+)/(?'id'\d+)",    // '/image/un-texte/51'
    'album'     => "/album/(?'album'[\w\-]+)",              // '/album/album-slug'
    'categorie'  => "/categorie/(?'categorie'[\w\-]+)",        // '/categorie/categorie-slug'
    'page'      => "/page/(?'page'about|contact)",          // '/page/about', '/page/contact'
    'post'      => "/(?'post'[\w\-]+)",                     // '/post-slug'
    'accueil'      => "/"                                      // '/'
);

$uri = rtrim( dirname($_SERVER["SCRIPT_NAME"]), '/' );
$uri = '/' . trim( str_replace( $uri, '', $_SERVER['REQUEST_URI'] ), '/' );
$uri = urldecode( $uri );

foreach ( $regles as $action => $regle) {
    if ( preg_match( '~^'.$regle.'$~i', $uri, $params ) ) {

        include( $action . '.php' );
        exit();
    }
}

// Si rien n'est trouvé, on affiche une page 404.php
include(  '404.php' );</pre>



<p>Dans notre exemple, dans ton dossier et au même niveau, il y a les fichiers suivants :</p>



<ul class="wp-block-list"><li>index.php</li><li>404.php</li><li>image.php</li><li>album.php</li><li>categorie.php</li><li>page.php</li><li>post.php</li><li>accueil.php</li></ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Voilà, tu es en mesure de mettre en place l&rsquo;url rewriting sur ton site et cela de manière simple.</p>



<p class="has-small-font-size">Cette page a été faite après avoir  longtemps eu des problèmes, ja source a été trouvé sur le forum <a rel="noreferrer noopener" href="https://stackoverflow.com/questions/16388959/url-rewriting-with-php" target="_blank">stackoverflow.com</a>.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/php-url-rewriting/">PHP, l&rsquo;url rewriting</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/php-url-rewriting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">410</post-id>	</item>
	</channel>
</rss>
