Aller au contenu
Outil gratuit

Générateur .htaccess et générateur htpasswd

Avec le générateur .htaccess, crée en ligne un fichier .htaccess prêt à l’emploi à partir de modules : redirections 301, HTTPS, protection par mot de passe, mise en cache et compression. Il crée aussi le fichier .htpasswd avec un hash bcrypt. Pour example.com, il peut par exemple générer les règles 301 qui redirigent www.example.com et http vers https://example.com. Gratuit, sans inscription et directement dans ton navigateur.

Créé par Dimitri Heissler

Tu développes ton propre projet ? Héberge-le sur un VPS avec un contrôle total.

Facultatif. Nécessaire uniquement pour la règle www et la protection contre le hotlinking. La règle ne s’applique alors qu’à ce domaine.

Démarrage rapide

Le fichier final se trouve sous les éléments. Accéder directement au résultat

HTTPS et www

Force HTTPS et définit si ton adresse utilise www ou non.

Une écriture uniforme évite les contenus en double dans les moteurs de recherche. Saisis ton domaine ci-dessus pour que la règle ne s’applique qu’à lui.

  • Si ton site est derrière Cloudflare, un Load Balancer ou un Reverse Proxy, Apache ne voit souvent que HTTP et redirige en boucle (erreur ERR_TOO_MANY_REDIRECTS). Active alors « Derrière un proxy ».

Redirections

Redirige les anciennes adresses vers les nouvelles ou transfère l’ensemble du domaine.

Protection par mot de passe

Protège la page avec un nom d’utilisateur et un mot de passe, par exemple pour une version de préproduction.

Accès IP

Autorise uniquement certaines adresses IP ou en bloque quelques-unes.

Pages d’erreur

Affiche des pages personnalisées pour les erreurs 404, 403, 500 et autres.

Cache du navigateur

Définit combien de temps les navigateurs conservent les images, les styles et les polices.

Les images et les polices changent rarement et peuvent être mises en cache longtemps. Pour les fichiers CSS et JavaScript, ne choisis une longue durée que si leur nom contient un numéro de version.

Compression

Compresse les textes avec Brotli et GZIP pour accélérer leur transfert.

Seuls les formats texte comme HTML, CSS, JavaScript, JSON, XML et SVG sont compressés. Les images et vidéos sont déjà compressées et restent inchangées.

Empêche d’autres sites d’intégrer directement tes images.

Sécurité

Désactive l’affichage du contenu des répertoires et bloque l’accès aux fichiers cachés et aux Backups.

  • Options -Indexes provoque une erreur 500 chez certains hébergeurs qui n’autorisent pas Options dans le fichier .htaccess. Dans ce cas, supprime cette ligne ou demande au support d’activer AllowOverride Options.

En-têtes de sécurité

Définit X-Frame-Options, nosniff, Referrer-Policy, Permissions-Policy et HSTS.

Détermine si d’autres sites peuvent intégrer ta page dans un cadre.

  • La Permissions-Policy bloque l’accès de la page à la caméra, au microphone et à la localisation. Si tu as besoin de l’un d’eux, par exemple pour un chat vidéo ou une carte, adapte cette ligne.

Valeurs PHP

Augmente la limite d’upload, la mémoire et le temps d’exécution pour PHP.

Tes fichiers

5 composants actifs

# .htaccess généré avec le générateur .htaccess de ZAP-Hosting
# Avant le téléversement : crée une copie de sauvegarde et vérifie d’abord dans un environnement de test.

# HTTPS et forme du nom de domaine
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Général et sécurité
Options -Indexes
AddDefaultCharset UTF-8
ServerSignature Off
<IfModule mod_headers.c>
  Header always unset X-Powered-By
  Header unset X-Powered-By
</IfModule>
RewriteCond %{REQUEST_URI} !(^|/)\.well-known/ [NC]
RewriteRule (^|/)\. - [F]
<FilesMatch "\.(bak|sql|log|ini|swp|dist|orig|old|conf)$|~$">
  Require all denied
</FilesMatch>

# En-têtes de sécurité
<IfModule mod_headers.c>
  Header always set X-Content-Type-Options "nosniff"
  Header always set X-Frame-Options "SAMEORIGIN"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>

# Compression
<IfModule mod_brotli.c>
  AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/css text/xml text/javascript application/javascript application/json application/ld+json application/xml application/xhtml+xml application/rss+xml application/atom+xml image/svg+xml image/x-icon font/ttf font/otf application/vnd.ms-fontobject
</IfModule>

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript application/javascript application/json application/ld+json application/xml application/xhtml+xml application/rss+xml application/atom+xml image/svg+xml image/x-icon font/ttf font/otf application/vnd.ms-fontobject
</IfModule>

# Cache du navigateur
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/jpeg "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/webp "access plus 1 month"
  ExpiresByType image/avif "access plus 1 month"
  ExpiresByType image/svg+xml "access plus 1 month"
  ExpiresByType image/x-icon "access plus 1 month"
  ExpiresByType text/css "access plus 1 week"
  ExpiresByType text/javascript "access plus 1 week"
  ExpiresByType application/javascript "access plus 1 week"
  ExpiresByType font/woff "access plus 1 year"
  ExpiresByType font/woff2 "access plus 1 year"
  ExpiresByType font/ttf "access plus 1 year"
  ExpiresByType font/otf "access plus 1 year"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
  ExpiresByType video/mp4 "access plus 1 month"
  ExpiresByType video/webm "access plus 1 month"
  ExpiresByType audio/mpeg "access plus 1 month"
  ExpiresByType audio/ogg "access plus 1 month"
  ExpiresByType text/html "access plus 0 seconds"
  ExpiresByType application/xhtml+xml "access plus 0 seconds"
</IfModule>

64 lignes

Certains navigateurs suppriment le point initial ou ajoutent .txt. Avant de téléverser le fichier téléchargé, renomme-le en .htaccess.

Tu devrais vérifier cela

  • Si ton site est derrière Cloudflare, un Load Balancer ou un Reverse Proxy, Apache ne voit souvent que HTTP et redirige en boucle (erreur ERR_TOO_MANY_REDIRECTS). Active alors « Derrière un proxy ».

Avant le téléversement

  • Sauvegarde le fichier .htaccess existant, s’il y en a un.
  • Teste d’abord le fichier sur un site de préproduction, pas sur le site en ligne.
  • Place-la dans le répertoire racine de ton domaine (généralement public_html ou htdocs). Son nom commence par un point.
  • Si la page affiche ensuite une erreur 500, renomme le fichier via FTP et consulte le journal des erreurs de ton serveur.

Exemple de résultat

Ce que te fournit ce générateur .htaccess

Active les modules pour obtenir un fichier .htaccess prêt à copier ou à télécharger. La protection par mot de passe génère également un fichier .htpasswd avec un hash bcrypt, et les paramètres PHP un fichier .user.ini. Un avertissement apparaît immédiatement pour les réglages risqués. Trois exemples :

Exemple 1 : nouveau site web sur example.com

Saisie :

  • Domaine : example.com
  • Imposer HTTPS, adresse toujours sans www
  • Compression GZIP activée
  • Cache : images 1 mois, CSS et JavaScript 1 semaine, HTML toujours revérifié
  • Désactiver le listage des répertoires

Résultat (.htaccess) :

# .htaccess généré avec le générateur .htaccess de ZAP-Hosting
# Avant le téléversement : crée une copie de sauvegarde et vérifie d’abord dans un environnement de test.

# HTTPS et forme du nom de domaine
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Général et sécurité
Options -Indexes

# Compression
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript application/javascript application/json application/ld+json application/xml application/xhtml+xml application/rss+xml application/atom+xml image/svg+xml image/x-icon font/ttf font/otf application/vnd.ms-fontobject
</IfModule>

# Cache du navigateur
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/jpeg "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/webp "access plus 1 month"
  ExpiresByType image/avif "access plus 1 month"
  ExpiresByType image/svg+xml "access plus 1 month"
  ExpiresByType image/x-icon "access plus 1 month"
  ExpiresByType text/css "access plus 1 week"
  ExpiresByType text/javascript "access plus 1 week"
  ExpiresByType application/javascript "access plus 1 week"
  ExpiresByType text/html "access plus 0 seconds"
  ExpiresByType application/xhtml+xml "access plus 0 seconds"
</IfModule>

Résultat en clair : une adresse comme http://www.example.com/seite est redirigée en une seule redirection 301 vers https://example.com/seite. Les accès via http:// sans www arrivent également sur https:// par une redirection 301. Les images restent 1 mois dans le cache du navigateur (max-age=2592000), CSS et JavaScript 1 semaine, tandis que les pages HTML sont revérifiées à chaque visite. HTML, CSS, JavaScript et JSON sont transmis avec une compression GZIP. Si quelqu’un accède à un dossier sans fichier index, il ne voit plus la liste des fichiers, mais une erreur 403.

Exemple 2 : site de préproduction protégé par mot de passe

Saisie :

  • Texte de la demande de mot de passe : Staging
  • Chemin du fichier .htpasswd : /home/example/.htpasswd
  • Utilisateur alice avec le mot de passe Sommer-2026!
  • Bloquer les moteurs de recherche

Résultat (.htaccess) :

# .htaccess généré avec le générateur .htaccess de ZAP-Hosting
# Avant le téléversement : crée une copie de sauvegarde et vérifie d’abord dans un environnement de test.

# Protection par mot de passe
AuthType Basic
AuthName "Staging"
AuthUserFile /home/example/.htpasswd
Require valid-user

<IfModule mod_headers.c>
  Header always set X-Robots-Tag "noindex, nofollow"
</IfModule>

Résultat (.htpasswd) :

alice:$2y$10$EixZaYVK1fsbw1ZfbX3OXevuQZIxS3zUD8zrCJEoRasNwfjhtG6f.

Résultat en clair : les visiteurs voient une fenêtre de connexion affichant « Staging ». Sans identifiants valides, le serveur répond avec le statut 401. Le fichier .htpasswd ne contient que le hash bcrypt : $2y$ désigne bcrypt, 10 est le facteur de coût, suivis du sel et du hash. Le mot de passe lui-même n’apparaît nulle part. Place le fichier au chemin indiqué par AuthUserFile, de préférence hors du répertoire Web.

Exemple 3 : déplacer une page, en supprimer une autre

Saisie :

  • /old-page redirige par 301 vers /new-page, y compris tous les sous-chemins
  • /summer-sale est supprimé définitivement (410), uniquement pour ce chemin exact

Résultat (.htaccess) :

# .htaccess généré avec le générateur .htaccess de ZAP-Hosting
# Avant le téléversement : crée une copie de sauvegarde et vérifie d’abord dans un environnement de test.

# Redirections personnalisées
Redirect 301 /old-page /new-page
RedirectMatch 410 "^/summer-sale/?$"

Résultat en clair : /old-page et /old-page/info sont redirigées avec le code 301 vers /new-page et /new-page/info ; les sous-pages sont donc conservées. /summer-sale renvoie le statut 410 (Gone) pour que les moteurs de recherche retirent la page plus rapidement de leur index. Une adresse comme /old-pages reste inchangée, car la règle ne s’applique qu’aux limites des chemins. L’outil rappelle aussi que le navigateur mémorise définitivement une redirection 301 et que tu devrais d’abord tester les nouvelles règles avec 302.

Comment ça fonctionne

Comment tu crées un fichier .htaccess

Quatre étapes, de la sélection au fichier testé, sans compte ni installation.

Étape 1

Sélectionner les blocs de construction

Saisis ton domaine en haut, puis active les modules dont tu as besoin, ou pars d’un modèle : « Bonne configuration de base », « Sécuriser l’environnement de préproduction » ou « Migrer un domaine ». Chaque module explique brièvement son rôle.

Étape 2

Régler les options

Configure des redirections avec 301, 302, 307, 308 ou 410, des utilisateurs, des pages d’erreur ou des durées de mise en cache. L’outil t’avertit en cas de paramètres risqués, comme une boucle de redirection, l’absence de HTTPS pour la protection par mot de passe ou une durée de mise en cache trop longue.

Étape 3

Copier ou télécharger le fichier

Le résultat se met à jour à chaque modification. Copie le fichier .htaccess ou télécharge-le. Pour la protection par mot de passe, tu obtiens aussi un fichier .htpasswd contenant le hash bcrypt ; pour les paramètres PHP, un fichier .user.ini.

Étape 4

Téléverser et tester

Sauvegarde le fichier existant, place le nouveau dans le répertoire racine de ton domaine et ouvre la page. Teste d’abord les redirections avec 302, puis avec 301.

Générateur htpasswd

Générateur htpasswd : créer un fichier .htpasswd avec un hash bcrypt

Pour protéger l’accès par mot de passe avec .htaccess, tu as aussi besoin d’un fichier .htpasswd. Chaque ligne contient un utilisateur et son mot de passe chiffré. Le générateur ci-dessus crée la ligne dans la section « Protection par mot de passe ». Ton navigateur calcule le hachage ; le mot de passe n’est envoyé nulle part.

Structure d’un fichier .htpasswd

Une ligne par utilisateur au format nom d’utilisateur:hash. Exemple pour le nom d’utilisateur et le mot de passe ci-dessus :

alice:$2y$10$EixZaYVK1fsbw1ZfbX3OXevuQZIxS3zUD8zrCJEoRasNwfjhtG6f.

Quelle fonction de hachage est sûre ?

bcrypt, reconnaissable à $2y$, est le hachage recommandé et est pris en charge par Apache 2.4. Les anciens formats comme MD5 ($apr1$), SHA-1 ou crypt sont moins sûrs et plus faciles à casser. Le générateur produit donc des hachages bcrypt.

Alternative sur le serveur

Avec un accès shell, crée le même fichier à l’aide du programme htpasswd. L’option -B utilise bcrypt, et -c crée un nouveau fichier :

htpasswd -cB .htpasswd benutzername

Tâches fréquentes

Redirection .htaccess, HTTPS, protection par mot de passe et WordPress : des règles à copier

Les quatre raisons les plus courantes d’utiliser un fichier .htaccess, sous forme de règles prêtes à l’emploi. Adapte les chemins et le domaine, ou génère-les avec l’outil ci-dessus.

Redirection .htaccess (301)

Redirect 301 redirige définitivement une page et tout ce qui se trouve sous son chemin. /alte-seite/info devient /neue-seite/info. La règle doit être placée dans le fichier .htaccess à la racine du domaine.

Redirect 301 /alte-seite /neue-seite

Forcer HTTPS avec .htaccess

Redirige chaque requête http vers https avec une redirection 301. Si le site se trouve derrière Cloudflare ou un proxy, tu dois aussi vérifier l’en-tête X-Forwarded-Proto pour éviter une boucle de redirection.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Protection par mot de passe avec .htaccess

Demande un nom d’utilisateur et un mot de passe pour accéder au répertoire. AuthUserFile indique le chemin complet vers .htpasswd sur le serveur, de préférence hors du répertoire web.

AuthType Basic
AuthName "Zone protégée"
AuthUserFile /pfad/zur/.htpasswd
Require valid-user

.htaccess pour WordPress

Voici le bloc standard créé par WordPress. Ne le modifie pas. Place tes propres règles, comme les redirections ou HTTPS, avant ce bloc ; sinon, elles ne s’appliqueront pas.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Vue d’ensemble

Les directives Apache utilisées par ces modules

Chaque module ajoute quelques directives clairement nommées au fichier. Le tableau indique lesquelles et quel module Apache les gère. Si un module facultatif manque, Apache ignore le bloc au lieu d’afficher une erreur.

Blocs de construction, directives Apache et modules concernés
Bloc de constructionDirectivesModule Apache
HTTPS et wwwRewriteCond, RewriteRule [R=301]mod_rewrite
RedirectionsRedirect, RedirectMatch, RewriteRulemod_alias, mod_rewrite
Protection par mot de passeAuthType Basic, AuthName, AuthUserFile, Require valid-usermod_auth_basic, mod_authn_file, mod_authz_user
Accès IPRequire ip, Require not ip, RequireAny, RequireAllmod_authz_host, mod_authz_core
Pages d’erreurErrorDocumentcore
Cache du navigateurExpiresActive, ExpiresByTypemod_expires
CompressionAddOutputFilterByType DEFLATE, BROTLI_COMPRESSmod_deflate, mod_brotli
Protection contre les hotlinksRewriteCond %{HTTP_REFERER}, RewriteRule [F]mod_rewrite
SécuritéOptions -Indexes, FilesMatch, ServerSignature Offcore, mod_authz_core
En-têtes de sécuritéHeader always setmod_headers
Valeurs PHPphp_value, .user.inimod_php

Découvrir plus

Autres outils

FAQ

Questions fréquentes sur Générateur .htaccess

Réponses courtes sur .htaccess, les redirections, la protection par mot de passe et cet outil.

Le fichier .htaccess est un fichier de configuration du serveur web Apache qui s’applique à un répertoire. Il te permet de gérer les redirections, la protection par mot de passe, les pages d’erreur, la mise en cache, la compression et les règles d’accès sans modifier la configuration du serveur. C’est particulièrement pratique en hébergement mutualisé. Apache et le serveur web LiteSpeed lisent ce fichier, mais nginx l’ignore : avec nginx, les règles doivent figurer dans des blocs server ou location de sa configuration. Apache relit le fichier .htaccess à chaque requête. Sur ton propre serveur, par exemple un VPS, il vaut donc mieux placer ces mêmes règles directement dans la configuration de l’hôte virtuel.

Le fichier doit s’appeler exactement .htaccess, avec un point au début et sans extension. Place-le dans le répertoire racine de ton domaine, généralement public_html, htdocs ou httpdocs. Ses règles s’appliquent au dossier où il se trouve et à tous ses sous-dossiers. Les fichiers commençant par un point étant masqués, ton logiciel FTP peut ne pas les afficher. Active-y l’affichage des fichiers cachés.

Le plus simple est d’utiliser la ligne Redirect 301 /alte-seite /neue-seite. Elle redirige ce chemin et tous ses sous-chemins : /alte-seite/info devient donc /neue-seite/info. Pour ne rediriger qu’un chemin précis, utilise RedirectMatch 301 avec une expression régulière. La destination peut aussi être une adresse complète comme https://beispiel.de/seite. Le générateur crée les deux formes et t’avertit si une règle provoque une boucle. Outre 301 (permanent), il propose 302 (temporaire), 307, 308 et 410 pour les pages supprimées. Teste d’abord les nouvelles règles avec 302, car les navigateurs mémorisent durablement une redirection 301.

Active le moteur de réécriture, vérifie avec RewriteCond si HTTPS est désactivé, puis utilise RewriteRule pour rediriger vers l’adresse https avec un code 301. Le module « HTTPS et www » génère le bloc complet. Si ton site passe par Cloudflare, un load balancer ou un reverse proxy, Apache ne voit souvent que HTTP et redirige en boucle : le navigateur affiche ERR_TOO_MANY_REDIRECTS. Active alors l’option « Derrière un proxy », qui vérifie également l’en-tête X-Forwarded-Proto.

Il te faut deux fichiers : .htaccess avec AuthType Basic, AuthName, AuthUserFile et Require valid-user, et .htpasswd avec une ligne par utilisateur au format name:hash. Le générateur crée les deux. Le mot de passe est haché avec bcrypt dans ton navigateur ; le hash commence par $2y$. MD5 ($apr1$), SHA-1 et crypt sont moins sûrs. Place le fichier .htpasswd en dehors du répertoire web et active HTTPS, car Basic Auth transmet les identifiants à chaque requête. Si tu combines la protection par mot de passe avec le module « Accès par IP », choisis « IP ou mot de passe » ou « IP et mot de passe » : le générateur créera le bloc Require adapté.

Une erreur 500 signifie presque toujours qu’Apache ne comprend pas une ligne. Les causes fréquentes sont une faute de frappe, une directive dont le module manque sur le serveur ou un paramètre que ton hébergeur n’autorise pas dans le fichier .htaccess, comme Options ou php_value. Renomme le fichier par FTP pour rétablir le site. Le journal d’erreurs du serveur indique l’erreur exacte. Les blocs du générateur pour la mise en cache, la compression, les en-têtes et PHP sont protégés par IfModule : ils ne provoquent pas d’erreur 500 si un module manque. php_value ne fonctionne que si PHP s’exécute en tant que module Apache. Pour PHP-FPM, le générateur fournit aussi les paramètres PHP dans un fichier .user.ini.

WordPress crée lui-même un bloc entre # BEGIN WordPress et # END WordPress, que tu dois laisser tel quel (il figure dans la section ci-dessus à copier). Ajoute les règles générées avant ce bloc. Les redirections et les règles HTTPS doivent précéder le bloc WordPress, sinon elles ne s’appliqueront pas, car WordPress envoie toutes les requêtes vers index.php. WordPress a besoin du moteur de réécriture pour les permaliens : ne le désactive donc pas.

Non. Le générateur fonctionne entièrement dans ton navigateur : tes saisies ne sont ni envoyées à un serveur ni enregistrées. Le hash bcrypt est lui aussi créé localement. Seuls les noms des modules activés figurent dans l’adresse, jamais les domaines, chemins, adresses IP ou mots de passe.

D’autres questions ?

Contacter le support
Tu crées ton propre projet ?

Avec ton propre serveur, les règles sont là où elles doivent être : dans ta configuration

Sur un VPS ZAP-Hosting, tu gères toi-même Apache ou nginx, sans les limites de l’hébergement mutualisé.

4,4/5 Trustpilot32 000+ Serveurs actifsDepuis 2010

Sans configuration. Sans risque. En ligne en quelques secondes.

Durée flexibleRésiliable à tout momentEn ligne en 60 secondes

Tu cherches d’autres outils ? Voir tous les outils de développement