Nous allons voir ici que certains fichiers sources sont indispensables pour mieux optimiser un site web. Nous allons voir qu'il est simple de mieux référencer son site, de le passer en https, de le sécuriser davantage et de paramètrer ses redirections et ses pages d'erreurs.
Le .htaccess est un fichier que l'on ajoute dans le dossier source de son site. Celui-ci a pour objectif de donner des informations au serveur. Il va permettre de faire des redirections, de mettre son site en maintenance, de protéger une zone réservée aux administrateurs ou encore de paramétrer son site en https.
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.monsite.fr/$1 [R,L]
Pour protéger une zone de son site (un espace administrateur, un dossier ou un fichier), il est possible de le faire via son .htaccess. Pour fonctionner, on lie celui-ci à un .htpasswd que l'on place dans le dossier à protéger. Ce dernier contient les informations qui vont permettre de comparer avec les identifiants entrées par l'utilisateur.
AuthUserFile /exemple/.htpasswd
AuthName "Accès protégé"
AuthType Basic
Require valid-user
<Files monfichier.php>
AuthUserFile /exemple/.htpasswd
AuthName "Accès restreint"
AuthType Basic
require valid-user
</Files>
Nom_d_utilisateur:Mot_de_passe
Pour rediriger un utilisateur sur une page en fonction d'une erreur :
ErrorDocument 401 /erreurs/401.php
ErrorDocument 403 /erreurs/403.php
ErrorDocument 404 /erreurs/404.php
ErrorDocument 500 /erreurs/500.php
Rappel :
400 : Bad Request: la syntaxe de la requête est mal formulée.
401 : Unhautorized: l'utilisateur n'a pas entré le bon mot de passe pour accéder au contenu.
403 : Forbidden: l'accès au contenu est interdit.
404 : Not Found: le document n'a pas été trouvé.
500 : Internal Server Error: le serveur a rencontré une erreur interne (erreur de script ou erreur passagère).
503 : Service Unvailable: le serveur ne peut pas répondre à cause d'une surcharge de trafic (trop de visiteurs).
Pour rediriger vers une page (lorsqu'un utilisateur entre une url éronnée par exemple ou s'il cherche à accéder à un dossier privé sur votre site, ici, l'utilisateur est renvoyé sur une page "Accès interdit"):
DirectoryIndex ../403.php
ErrorDocument 403 /maintenance.php
deny from all
allow from xx.xxx.xxx.xxx
<Files maintenance.php>
allow from all
</Files>
Ici, "Deny from all" interdit l'accès à tous les utilisiteurs qui sont ainsi redirigés vers la page de maintenance mise à part pour les utilisateurs qui ont pour adresse IP : xx.xxx.xxx.xxx.
Enfin, on indique que pour la page de maintenance, tout le monde peut y accéder.
ErrorDocument 404 /404.php
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.monsite.fr/$1 [R,L]
Le robots.txt est un fichier que l'on ajoute dans le dossier source de son site. Celui-ci a pour objectif de donner des informations aux robots qui parcourent votre site. Il permet notamment de mieux référencer ce dernier en dirigeant les robots vers un sitemap qui recense les pages de votre site que vous souhaitez référencer. Le robots.txt permet également d'indiquer aux robots quel dossier ou page vous ne souhaitez pas référencer.
Ici, les images contenues dans 2 dossiers différents ainsi que l'espace administrateur ne seront pas parcourus par les robots et ne seront donc pas référencés. "User-Agent: *" permet de s'adresser à tous les robots existants
User-Agent: *
Disallow: /img/dossier_1/
Disallow: /img/dossier_2/
Disallow: /espace_admin
Sitemap: https://www.monsite.fr/sitemap.xml
User-Agent: *
Disallow: /img/icones/
Disallow: /img/carree_sites/
Disallow: /admin
Sitemap: https://www.monsite.fr/sitemap.xml
Pour rendre un lien invisible aux yeux des robots :
<a href="#" rel=nofollow> </a>
Le sitemap est un fichier que l'on ajoute dans le dossier source de son site. Celui-ci a pour objectif de faciliter l'indexation d'un site. Il liste les différents URL d'un site à référencer ainsi que quelques métadonnées telles que la priorité (qui permet de donner plus d'importance à une page qu'à une autre) et la date des dernières modifications.
> Pour réaliser un sitemap automatiquement
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
<url>
<loc>https://www.devu.fr/</loc>
<lastmod>2018-05-19T09:32:17+00:00</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://www.devu.fr/index.php</loc>
<lastmod>2018-05-19T09:32:17+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://www.devu.fr/nos_prestations.php</loc>
<lastmod>2018-05-19T09:32:17+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://www.devu.fr/articles.php</loc>
<lastmod>2018-05-19T09:32:17+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://www.devu.fr/contact.php</loc>
<lastmod>2018-05-19T09:32:17+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://www.devu.fr/faq.php</loc>
<lastmod>2018-05-26T09:32:17+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://www.devu.fr/Elements/documents/a236050813908e815db08bf2281cf8f26.pdf</loc>
<lastmod>2018-05-08T11:49:46+00:00</lastmod>
<priority>0.80</priority>
</url>
</urlset>
Dans certains cas, pour des hébergements (souvent mutualisés) qui n'ont pas accès au fichier php.ini, il est possible de créer un sous fichier .user.ini dans le dossier racine 'www'. Celui-ci permet de modifier certains paramètres du php.ini sur son site.
post_max_size=3000M
memory_limit=3000M
upload_max_filesize=3000M
Une page phpinfo.php peut être utile pour connaître rapidement les configurations de son site, cependant, en ligne, celle-ci peut représenter un risque pour la sécurité du site.
<?php phpinfo(); ?>
Un fichier chemin.php permet d'avoir le chemin exacte d'un fichier particulier sur le serveur, il peut être utile pour intégrer un .htpasswd ou pour interroger le serveur (pour connaitre la taille du disque par exemple).
<?php echo realpath ('index.php'); ?>