Les fichiers .htaccess et index.php
Le fichier .htaccess à la racine du site configure un seul point d'entrée dans le code pour toutes les requêtes : index.php. Il redirige aussi toutes les requêtes vers le nom de domaine www. complet du site web, si nécessaire. Il peut être édité pour forcer un dialogue en HTTPS. NOTE : Le fichier .htaccess est généré à la création du site.
.htaccess
- SetEnv PHP_VER 7
- SetEnv REGISTER_GLOBALS 0
- Options -Indexes
- Options +FollowSymLinks
- ErrorDocument 403 /index.php
- ErrorDocument 404 /index.php
La ligne 1 indique à Apache quelle version de PHP doit exécuter le code du site web.
iZend est développé en PHP 7.0 mais fonctionne en PHP 5.3.
La ligne 2 tente de mettre le paramètre de PHP register_globals
à false
.
NOTE : Ce paramètre n'est plus utilisé en PHP 7 mais un fournisseur internet peut avoir une configuration par défaut avec PHP 5 et register_globals
à true
.
La ligne 4 interdit la génération par Apache de la liste du contenu d'un répertoire. La ligne 5 permet de suivre les liens symboliques.
Les lignes 7 et 8 redirigent les erreurs d'accès et d'adressage vers index.php.
- RewriteEngine On
- RewriteCond %{HTTPS} off
- RewriteCond %{HTTP_HOST} ^sitename\.net [NC]
- RewriteRule ^(.*)$ http://www.sitename.net/$1 [R=301,L]
- RewriteCond %{HTTPS} on
- RewriteCond %{HTTP_HOST} ^sitename\.net [NC]
- RewriteRule ^(.*)$ https://www.sitename.net/$1 [R=301,L]
- RewriteRule ^(favicon\.ico|robots\.txt|sitemap\.xml|google.*\.html) - [NC,L]
- RewriteCond %{REQUEST_FILENAME} -f
- RewriteRule /*\.(css|js|gif|png|jpe?g|ico|swf|flv|mp3|mp4|m4v|m4a|ogg|webm|zip|jar)$ - [NC,L]
- RewriteRule ^(.*)$ index.php [QSA,L]
La ligne 10 met le moteur de redirection en marche.
IMPORTANT : Si le module rewrite
d'Apache n'est pas activé, cette directive échoue. Tout le fonctionnement du site en dépend. Vérifiez dans le journal des erreurs d'Apache.
Les règles définies ligne 12 à 14 et 16 à 18 renvoient toutes les requêtes en HTTP et en HTTPS au domaine sitename.net
vers le domaine complet www.sitename.net
.
La ligne 20 renvoie inchangés les accès aux fichiers favicon.ico, robots.txt et sitemap.xml ainsi qu'au fichier de validation de Google.
Les lignes 21 à 23 renvoient tous les chemins d'accès sur le fichier index.php à l'exception d'une série de fichiers dont les noms désignent des fichiers CSS ou JavaScript, des fichiers contenant des images, des audios ou des vidéos, des archives.
IMPORTANT : Si le site a des liens directs vers d'autres types de fichiers, pensez à ajouter leurs extensions à la liste de la règle ligne 22. Attention aux fichiers d'export d'une base de données ou autres fichiers sensibles qui pourraient devenir accessibles et être téléchargés !
Pour forcer les requêtes en HTTPS, ajoutez les 2 règles suivantes juste après l'activation du moteur de redirection :
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
index.php
- define('ROOT_DIR', dirname(__FILE__));
Définit la constante ROOT_DIR
à la valeur du répertoire contenant le site web sur le système hôte.
- set_include_path(ROOT_DIR . PATH_SEPARATOR . get_include_path());
- set_include_path(ROOT_DIR . DIRECTORY_SEPARATOR . 'includes' . PATH_SEPARATOR . get_include_path());
- set_include_path(ROOT_DIR . DIRECTORY_SEPARATOR . 'library' . PATH_SEPARATOR . get_include_path());
Ajoute ROOT_DIR
et les répertoires library et includes au chemin de PHP.
- require_once 'bootstrap.php';
- bootstrap();
Initialise l'environnement du programme avec bootstrap
.
- require_once 'engine.php';
- dispatch($supported_languages); // see config.inc
Charge les fonctions du moteur et lance l'exécution de la requête en passant la liste des langues supportées à dispatch
.
Commentaires