Webhosting

.htaccess-bestand

Definitie

Het .htaccess-bestand is een configuratiebestand dat de webserver Apache, en ook LiteSpeed, leest in de map waarin het staat en in alle submappen. Je wijzigt er instellingen mee zonder toegang tot de hoofdconfiguratie: URL's herschrijven voor de permalinks van WordPress, redirects, toegangsbeperkingen, headers of caching.

.htaccess-bestand, Webhosting

De naam begint met een punt, waardoor het bestand in veel FTP-programma's en bestandsverkenners standaard onzichtbaar is. Het .htaccess-bestand hoort bij de wereld van Apache: LiteSpeed leest het ook, maar Nginx, Caddy en IIS negeren het. Het is het basisgereedschap bij shared hosting, waar je geen toegang hebt tot de configuratie van de server.

Hoe Apache de .htaccess leest

De documentatie van Apache presenteert het als een manier om de configuratie per map aan te passen voor wie geen rootrechten heeft. Alles hangt af van de directive AllowOverride in de hoofdconfiguratie: de standaardwaarde is None, en dan worden .htaccess-bestanden volledig genegeerd. Hosters zetten het open om permalinks, redirects en beperkingen mogelijk te maken.

Schema van een verzoek naar /wp-content/uploads/foto.jpg op Apache. De hoofdconfiguratie, httpd.conf en de virtual host, bepaalt met AllowOverride of .htaccess-bestanden worden gelezen. Apache leest daarna de .htaccess in de root van de site, met de permalinkregels van WordPress en de redirects, dan die in /wp-content/ als die bestaat, en dan die in /wp-content/uploads/, die bijvoorbeeld het uitvoeren van PHP in de media kan verbieden. De regels worden opgeteld en bij een conflict wint de diepste map.
Apache zoekt bij elk verzoek een .htaccess in elke map van het opgevraagde pad en telt de regels daarna bij elkaar op.

Zijn ze toegestaan, dan zoekt Apache in elke map van het opgevraagde pad naar een .htaccess en leest hij die bestanden bij elk verzoek opnieuw. Een wijziging werkt dus meteen, zonder herstart, maar ten koste van extra leesacties. Vandaar het advies van de documentatie: heb je toegang tot de hoofdconfiguratie, zet je regels dan daar in plaats van in .htaccess-bestanden.

Het WordPress-blok

WordPress schrijft in de .htaccess in de root de rewrite-regels waarmee de permalinks werken:

# BEGIN WordPress
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]
# END WordPress

Alles tussen de markeringen # BEGIN WordPress en # END WordPress kan door WordPress worden overschreven, bijvoorbeeld wanneer je de permalinkinstellingen opslaat. Zet je eigen regels buiten deze markeringen, net als die van plugins, die hun eigen blokken toevoegen.

Nuttige beveiligingen

  • Directe toegang verbieden tot wp-config.php en tot vergeten gevoelige bestanden, zoals .sql-back-ups, de map .git of debug.log, die we beschrijven in ons artikel over blootgestelde gevoelige bestanden.
  • Het uitvoeren van PHP in wp-content/uploads verhinderen met een aparte .htaccess voor die map.
  • wp-admin beperken op IP-adres of met een HTTP-wachtwoord, zoals in onze gids om wp-admin op serverniveau te beschermen.
  • De hotlinking van je afbeeldingen beperken aan de hand van de Referer-header.

Een syntaxfout geeft meteen een 500-fout voor de hele map: bewaar een kopie van het bestand voor elke wijziging.

Video: “URL herschrijven met htaccess | Een eigen website van A tot Z” (Davey Raaijmakers)

Voor WordPress

Op een Nginx-server heeft een .htaccess geen enkel effect: de regels moeten worden vertaald naar het bestand nginx.conf, waarvoor je vaak de hulp van de hoster nodig hebt. Toch gaan veel cache- en beveiligingsplugins uit van de .htaccess. WP Masquerade is er alleen van afhankelijk voor de bestandsaliassen van de Pro-versie, waarvoor het de regels per server genereert, en om zijn eigen map te verbergen: de pagina compatibele servers en caches geeft aan waar je deze regels plaatst, ook bij de Franse hoster o2switch, waar ze vóór het blok van LiteSpeed Cache moeten staan.

Verder lezen

  • Pagina Compatibel met hosting en cache

Bronnen

  1. Apache HTTP Server: .htaccess files (externe link, opent in een nieuw tabblad)
  2. WordPress Advanced Administration: Apache HTTPD / .htaccess (externe link, opent in een nieuw tabblad)
  3. Apache HTTP Server: When not to use mod_rewrite (externe link, opent in een nieuw tabblad)

Alle definities

WordPress-beveiliging, zonder ruis

Eén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.

Begin gratis, stap over op Pro wanneer je eraan toe bent

De gratis versie verbergt WordPress al en verplaatst de inlogpagina. Pro voegt aliassen, tweestapsverificatie en bewaking toe.