Appliquer une règle aux pages du site
Objectif : Écrire et tester une règle de réécriture limitée à un besoin précis du site principal.
Vous voulez proposer une URL courte pour une page du site, sans créer un fichier supplémentaire ni modifier la configuration globale d’Apache. Vous allez faire traiter la requête /accueil par le fichier d’index déjà présent, puis vérifier que la règle ne s’applique pas à l’autre hôte virtuel.
Dans la leçon précédente, vous avez distingué une réécriture interne d’une redirection HTTP. Ici, le navigateur conserve /accueil dans la barre d’adresse ; Apache choisit simplement un autre fichier à servir pour cette requête.
Choisir le contexte et la cible
La règle est placée dans apache/site-http.conf, à l’intérieur du bloc de l’hôte principal site.example.test. Elle ne concerne donc pas le second hôte, qui conserve son propre fichier apache/site-secondaire.conf. Le motif ^/accueil/?$ reconnaît précisément /accueil, avec ou sans barre oblique finale ; la substitution /index.html désigne le fichier existant dans la racine de documents.
Ajouter la règle au fichier de l’hôte principal
Voici le contenu complet de apache/site-http.conf pour cet état du projet. La directive RewriteEngine On active le traitement des règles dans ce contexte ; le module mod_rewrite a été vérifié dans la leçon 7. La règle est volontairement limitée à un seul chemin et réutilise index.html, préparé dans la racine /var/www/application.
<VirtualHost *:80>
ServerName site.example.test
DocumentRoot /var/www/application
RewriteEngine On
RewriteRule ^/accueil/?$ /index.html [END]
ErrorLog ${APACHE_LOG_DIR}/application-error.log
CustomLog ${APACHE_LOG_DIR}/application-access.log combined
</VirtualHost>La règle ne contient ni condition ni joker large : elle ne transforme pas toutes les URL et n’intercepte pas les chemins de l’hôte API. Ne copiez pas cette ligne dans le fichier global. Si votre configuration existante contient déjà des directives supplémentaires propres à l’hôte principal, conservez-les et insérez la règle dans son bloc, sans dupliquer les directives de journalisation ou d’hôte virtuel.
Tester avant de recharger
Après avoir enregistré le fichier à l’emplacement de configuration Apache utilisé par votre distribution, lancez le test de syntaxe. Ne poursuivez que si Apache confirme que la configuration est valide ; en cas d’échec, corrigez le message signalé et relancez le test. Rechargez ensuite le service, puis interrogez l’hôte principal avec curl.
sudo apachectl configtest
sudo systemctl reload apache2
curl -i --resolve site.example.test:80:127.0.0.1 http://site.example.test/accueil
curl -i --resolve site.example.test:80:127.0.0.1 http://site.example.test/Le test affiche « Syntax OK ». Pour les deux requêtes, si le site est accessible et index.html présent, curl reçoit une réponse HTTP 200 et le contenu de index.html. L’URL demandée /accueil ne fait pas l’objet d’une redirection.L’option --resolve fait utiliser temporairement à curl l’adresse locale indiquée pour le nom d’hôte ; elle permet de tester le bon hôte virtuel sans changer la résolution DNS du système. Comparez le résultat de /accueil à celui de / : les deux doivent servir le même fichier d’index, tandis que l’adresse demandée reste différente. Si le test local ne correspond pas à votre environnement, remplacez 127.0.0.1 par l’adresse du serveur Apache.
Pour vérifier le périmètre de la règle, vous pouvez aussi tester api.example.test avec sa propre résolution temporaire et demander /accueil. La règle ajoutée au fichier principal ne doit pas modifier le traitement de cet hôte ; son contenu dépend de la configuration et des fichiers déjà préparés pour l’API. Si la réponse du principal est inattendue, vérifiez le nom demandé, le fichier réellement installé et la sortie de apachectl configtest avant de modifier d’autres directives.
À retenir
- Placez une règle dans le fichier de l’hôte virtuel qu’elle doit concerner.
- Choisissez un motif précis et une substitution correspondant à un fichier existant.
- Utilisez un drapeau adapté pour maîtriser la poursuite des règles.
- Testez avec apachectl configtest avant chaque rechargement, puis vérifiez la réponse avec curl.
La prochaine leçon porte sur l’obtention et l’installation d’un certificat TLS ; la redirection vers HTTPS sera configurée ensuite.