Réécriture des URL

← Le volet web · 41 diapositives · flèches ou clic pour avancer

Réécriture des URL - Avec mod_rewrite - dans Apache
Réécriture des URL - PRINCIPE GÉNÉRAL
À quoi sert la réécriture ? - Par exemple: - monsite.com/sitemap.php - monsite.com/sitemap.xml - monsite.com/liste-auberge.php - monsite.com/hebergement/ - monsite.com/auberge.php?auberge=5 - monsite.com/hebergement/auberge/5/
Réécriture des URL - ENVIRONNEMENT
SERVEUR LINUX - Configuration du serveur web - (dire que les htaccess sont permis) - /etc/apache2/ sites-available/ - Configuration du serveur web - (dire que les htaccess sont permis) - /var/www/ - donne permission - www.ludijeu.com/ - .htaccess - <Directory /var/www/> - AllowOverride all - </ Directory > - www.ludijeu.com.conf
Activer le module php mod_rewrite dans php.ini - LoadModule rewrite_module modules/mod_rewrite.so - sudo a2enmod rewrite - systemctl restart apache2 - Creer une configuration specifique pour notre site - directement dans la config Apache - /etc/apache2/apache2.conf (on n'utilise pas cette solution) - dans le fichier .htaccess local au site - préalablement modifier /etc/apache2/apache2.conf ou…
Activer le module php mod_rewrite - sudo a2enmod rewrite - LoadModule rewrite_module modules/mod_rewrite.so - Creer une configuration specifique pour notre site - directement dans la config Apache - /etc/apache2/apache2.conf - /etc/apache/httpd.conf - C:\wamp64\bin\apache\apache2.4.23\conf\httpd.conf - dans le fichier .htaccess local au site - meilleur car peut etre versionne - Code de réécriture…
Activer le module php mod_rewrite - sudo a2enmod rewrite - LoadModule rewrite_module modules/mod_rewrite.so - Creer une configuration specifique pour notre site - directement dans la config Apache - /etc/apache2/apache2.conf - /etc/apache/httpd.conf - C:\wamp64\bin\apache\apache2.4.23\conf\httpd.conf => /etc/init.d/apache2 restart #pour reloader la config avec - dans le fichier .htaccess local au…
Activer le module mod_rewrite dans le fichier php.ini - => sudo a2enmod rewrite - => sudo systemctl restart apache2 - Activer la permission de charger les .htaccess Fichier /etc/apache2/apache2.conf ou /etc/apache2/sites-enabled/000-default.conf - => sudo systemctl restart apache2 #pour r eloader la config avec - Code de réécriture dans le fichier .htaccess du site - Modifier les liens dans le…
Activer le module mod_rewrite dans le fichier php.ini - => sudo a2enmod rewrite - => sudo systemctl restart apache2 - Activer la permission de charger les .htaccess Fichier /etc/apache2/apache2.conf ou /etc/apache2/sites-enabled/000-default.conf - => sudo systemctl restart apache2 #pour reloader la config avec - Code de réécriture dans le fichier .htaccess du site - Modifier les liens dans le…
Activer le module php mod_rewrite (déjà fait) - LoadModule rewrite_module modules/mod_rewrite.so (httpd.conf) - Redémarrer avec Bitnami WAMP Stack Manager Tool - Désactiver la cache php - Dans php.ini : opcache.enable=0 - Redémarrer avec Bitnami WAMP Stack Manager Tool - Onglet Manage Servers - Creer une configuration specifique pour notre site - dans le fichier .htaccess local au site -…
Avec le réseau - Télécharger en sftp ou via le drive un fichier .htaccess - Le déplacer et modifier son contenu - Avec un éditeur texte (Notepad++, Brackets, Atom) - Enregistrer sous > nommer le fichier dans le dialogue de sauvegarde - Multi-étape - Créer un fichier test.txt dans l'explorateur - Invite de commande - cd Desktop - move text.txt .htaccess - Dans Git Bash - touch .htaccess - Dans…
SERVEUR LINUX - Configuration du serveur web - (dire que les htaccess sont permis) - /etc/apache2/sites-available/ - <VirtualHost *:80> - ServerName www.ludijeu.com - ServerAdmin nadine@ludijeu.com - DocumentRoot /var/www/www.ludijeu.com - <Directory /var/www/> - AllowOverride FileInfo AuthConfig - </ Directory > - ErrorLog ${APACHE_LOG_DIR}/wiki.ludijeu.com.error.log - CustomLog…
Réécriture des URL - EXEMPLES de RÈGLES de RÉÉCRITURE
SERVEUR LINUX - Configuration du serveur web - (dire que les htaccess sont permis) - /etc/apache2/sites-available/ - <VirtualHost *:80> - ServerName www.ludijeu.com - ServerAdmin nadine@ludijeu.com - DocumentRoot /var/www/www.ludijeu.com - <Directory /var/www/> - AllowOverride all - </ Directory > - ErrorLog ${APACHE_LOG_DIR}/wiki.ludijeu.com.error.log - CustomLog…
SERVEUR LINUX - Configuration du serveur web - (dire que les htaccess sont permis) - /etc/apache2/ sites-available/ - Configuration du site web - (dire les regles) - /var/www/ - www.ludijeu.com/ - RewriteEngine On - RewriteRule ^jour/$ jour.html RewriteRule ^soir/$ soir.html - .htaccess - <Directory /var/www/html> - AllowOverride all - </ Directory > - www.ludijeu.com.conf - JOUR - jour.html -…
SERVEUR LINUX - Configuration du site web - (dire les regles) - /var/www/ - www.ludijeu.com/ - RewriteEngine On - RewriteRule ^jour/$ jour.html RewriteRule ^soir/$ soir.html - .htaccess - JOUR !!! - jour.html - SOIR !!! - soir.html - ORDINATEUR VISITEUR - Mozilla Firefox - www.ludijeu.com/jour/ - JOUR !!!
Ici la règle indique qu'un fichier sur disque pourra être désigné par un autre nom, que cet autre nom sera réécrit pour donner ce fichier. - Fichier sur disque: lefichiersurdisque.html - URL entree dans browser: monsite.com/url-tapee - Règle de réécriture - RewriteEngine On RewriteRule ^url-tapee$ lefichiersurdisque.html
RewriteEngine On RewriteRule ^url-tapee$ www.nouvelle-url.com [R] - RewriteRule ^url-tapee$ dernier-fichier.php [L] - RewriteRule ^UrL-MiXe$ fichier.php [NC] - RewriteRule ^url-tapee$ url-invisible.com/page.php [PT] - Drapeaux de redirection - Selon le drapeau de redirection, le navigateur peut afficher la nouvelle adresse [R] ou non, terminer la boucle de redirection [L], ignorer la casse [NC]…
Conditions pour des règles - RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d - Des conditions qui sont placées devant les règles agissent comme des if. Elles s'assurent que les règles qui suivent ne s'exécutent pas si les conditions ne sont pas vraies. - Ici par exemple, ces conditions typiques vérifient que le fichier n'existe pas avant de laisser les règles s'appliquer.…
Exemples de conditions - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_URI} ^/test.php RewriteCond %{QUERY_STRING} ^id=(.*)&img=(.*) - RewriteCond %{HTTPS}s on(s)| RewriteCond %{HTTP_HOST} ^(?:www\.)?siteA\.com$ - Diverses vérifications sur la nature du fichier demandé, des paramètres présents dans la requête, du site demandé, du protocole utilisé, permettent de contrôler à quoi on…
Boucles de redirection - RewriteRule ^url-tapee$ dernier-fichier.php [L] - A chaque fois qu'une requête est redirigée, le set de règles s'applique à nouveau. Il faut faire attention de ne pas causer de boucle infinie de redirection. Il existe deux manières de bloquer les redirections: le drapeau [L] et les conditions RewriteCond. - RewriteCond %{REQUEST_URI} ^/test.php
Installer en Sous-répertoire - RewriteBase /mon-repertoire-d-installation/ - Ce préfixe générique permet de l'exclure de toutes les instructions RewriteRule subséquentes et de fonctionner en path absolus (commençant pas /). - ... - Comme les règles de RewriteRule peuvent être relatives à l'emplacement de .htaccess (sans / de début), cette base est utile si les règles sont dans le apache2.conf
Syntaxe - mod_rewrite - Dans le fichier - .htaccess
RewriteEngine On - Dans le fichier .htaccess - Cette déclaration active la réécriture d'URL - Celle-ci doit donc être placés devant toutes les règles - Le module mod_rewrite doit être installé et activé
Fichier sur disque: bonjour.html - URL entree dans browser: allo - Dans le fichier .htaccess - RewriteEngine On RewriteRule ^allo$ bonjour.html
Fichier sur disque: bonjour.html - URL entree dans browser: allo.html - Dans le fichier .htaccess - RewriteEngine On RewriteRule ^allo\.html$ bonjour.html
Une seule version sans slash: - Retrait de l'extension - RewriteEngine On RewriteRule ^bonjour$ bonjour.html RewriteRule ^accueil$ index.html - RewriteEngine On RewriteRule ^bonjour/?$ bonjour.html RewriteRule ^accueil/?$ index.html - Version avec et sans slash: - Effacer l'option MultiViews du fichier /etc/apache2/sites-enabled/000-default
Pour images, js, css, etc. - RewriteEngine On - RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d - Ces règles permettent que si une règle adresse un fichier existant, les autres règles ne s'appliquent plus. C'est utile si on utilise des regex globales et qu'on craint qu'une de nos règles ne s'applique par inadverdance à un fichier image empêchant sa récupération coté client.
# Taper dans url: monsite.com/auberge/7/ - # Taper dans url: monsite.com/auberge/5/ - # Appelle le script : auberge.php?id=7 - Renvoi d'un parametre - RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^auberge/(.*)/$ auberge.php?id=$1
# Taper dans url: monsite.com/auberge/7/ - # Taper dans url: monsite.com/auberge/5/ - # Appelle le script : auberge.php?id=7 - Renvoi d'un parametre - RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^auberge/([0-9]+)/$ auberge.php?id=$1
Réécriture des URL - Applications pratiques
mod_rewrite pour Sitemap - RewriteEngine On - RewriteRule ^sitemap.xml$ sitemap.php - Fichier sur disque: sitemap.php - URL entree dans browser: monsite.com/sitemap.xml
Exposition d'une vue - RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ vue/$1/index.php #RewriteRule ^(.*)$ vue/$1.php
Réécriture des URL - RÉFÉRENCES
Références - Guide officiel - https://httpd.apache.org/docs/current/fr/mod/mod_rewrite.html - Flags (options) https://httpd.apache.org/docs/current/rewrite/flags.html
Tutoriels - URL rewriting for beginners - https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/
Outils - Testeur de htaccess - https://htaccess.madewithlove.be/
Avec mod_rewrite - dans Apache - Réécriture des URL
Recherche ? - Site de Apache - http://httpd.apache.org/docs/2.0/misc/rewriteguide.html - Flags (options) https://httpd.apache.org/docs/2.4/rewrite/flags.html - Questions ? - nadineducegep - @ - gmail.com - MERCI
Activer le module mod_rewrite dans le fichier php.ini - => sudo a2enmod rewrite - => sudo systemctl reload apache2 - Activer la permission de charger les .htaccess Fichier /etc/apache2/apache2.conf ou /etc/apache2/sites-enabled/000-default.conf - => sudo systemctl reload apache2 # pour reloader la config avec - Code de réécriture dans le fichier .htaccess du site - Modifier les liens dans le site…