WordPress .htaccess-bestand – Optimalisatie 2022

WordPress .htaccess-bestand: Hoe het .htaccess-bestand te gebruiken

WordPress .htaccess-bestand: het .htaccess-bestand is een belangrijk WordPress-kernbestand dat vaak wordt gebruikt om configuraties, beveiliging en prestatieparameters op serverniveau toe te voegen, te wijzigen en te overschrijven.

Wat is een .htaccess-bestand?

Een .htaccess-bestand is het hart van uw website, dat basisregels bevat die alle communicatie met uw WordPress en webhosting regelen. In het bijzonder kunt u het .htaccess-bestand in WordPress gebruiken voor taken zoals het beheren van de toegang tot webpagina’s, het verbeteren van de beveiliging en prestaties.

Maar wees voorzichtig!
Een enkele verkeerd geplaatste punt (.) kan uw site mogelijk laten crashen. Dus voordat u wijzigingen aanbrengt in het .htaccess-bestand, moet u het bestand eerst op een externe locatie opslaan. Als er iets misgaat of als je hulp nodig hebt, neem dan contact op met je webhostingprovider of een slimme webmaster.

Het standaard .htaccess-bestand in WordPress

Het .htaccess-bestand wordt meegeleverd met elke WordPress-installatie en bevindt zich over het algemeen in de hoofdmap. Gezien het belang van het bestand, is het vaak verborgen (het heeft geen bestandsextensie) en verschijnt het niet in de bestands- en mappenlijsten, voornamelijk omdat de bestandsbeheerder het om veiligheidsredenen verbergt.

In zeldzame gevallen is het mogelijk dat er geen .htaccess-bestand in de hoofdmap staat. Als dit voor u het geval is, kunt u een .htaccess-bestand maken in WordPress met behulp van Kladblok (of een teksteditor naar keuze) en deze opslaan onder de naam “.htaccess”. Stel het “Bestandstype” in op “Alle bestanden” en upload ze naar de hoofdmap van uw WordPress-installatie.

BELANGRIJK: Zorg ervoor dat de bestandsnaam NIET “htaccess” is zonder (.) – maar .htaccess met een punt (.) aan het begin.

Zo ziet het standaard .htaccess-bestand voor WordPress eruit:

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

Als het .htaccess-bestand nog niet bestaat in uw hoofdmap, kunt u het maken in het WordPress-dashboard onder: -> Instellingen -> Permalinks en klik vervolgens op “Wijzigingen opslaan” zoals weergegeven in de onderstaande afbeelding. Dit genereert het standaard .htaccess-bestand voor WordPress in de hoofdmap.

permalinks
Maak het .htaccess-bestand aan in het WordPress-dashboard.

Het standaard .htaccess-bestand van WordPress verwerkt alleen permalinks van uw website. Dit kan echter worden gewijzigd en er kunnen aanvullende regels worden toegevoegd. Hiermee kunt u bepalen hoe de Apache-webserver omgaat met bewerkinggerelateerde verzoeken.

Hoe bewerk ik een .htaccess-bestand in WordPress?

Om het .htaccess-bestand in WordPress te bewerken, ga je naar je hoofdmap. Je kunt dit doen via de bestandsbeheerder van je WordPress-provider of hoster, of via een FTP-client zoals FileZilla.

Log in op uw webhostingaccount en navigeer naar de map “public_html” en zoek naar het .htaccess-bestand in de WordPress-installatie.

JoeWP - .htaccess bestand op de server
Bestand .htaccess bestand in de hoofdmap van WordPress

Klik met de rechtermuisknop op het bestand en klik vervolgens op de optie “Bekijken/Bewerken” om het te openen in uw favoriete teksteditor. Bewerk de benodigde wijzigingen en sla het bestand op.

Een andere manier om het WordPress .htaccess-bestand te bewerken, is door een kopie te maken op het lokale systeem. Als je klaar bent, vervang je de live versie via FTP of de bestandsbeheerder.

WordPress .htaccess-omleidingen

Zoals hierboven weergegeven, kan het .htaccess-bestand in WordPress worden gebruikt om website-omleidingen te beheren. Hier zijn enkele veelgebruikte regels om u te helpen bij het instellen en beheren van omleidingen op uw WordPress-websites.

301 (permanente) omleiding

Een 301-omleiding vertelt zoekmachines dat een URL permanent naar een andere locatie is verplaatst. Dit is niet alleen beperkt tot URL’s, en u kunt een map, een pagina of zelfs een hele website omleiden. Met het volgende fragment wordt de alteseite.html omgeleid naar neueseite.html:

Redirect 301 /alteseite.html http://www.ihrewebsite.com/neueseite.html

302 (tijdelijke) omleiding

In tegenstelling tot 301 vertelt de 302-omleiding zoekmachines dat deze omleiding tijdelijk is. Dit is een geweldige manier om SERP-shuffles te vertragen (of zelfs te voorkomen). Voeg de volgende regel toe aan het .htaccess-bestand:

Redirect 302 /alteseite.html http : //www.ihrewebsite.com/neueseite.html

URL forceren op www

De volgende .htaccess-regel in WordPress leidt alle bezoekers van example.com om naar: www.example.com.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]

URL forceren naar niet-www

De volgende .htaccess-regel leidt alle bezoekers om van www.example.com naar example.com.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

HTTP’s afdwingen

De volgende regel in het .htaccess-bestand van WordPress dwingt al uw bezoekers om HTTPS te gebruiken in plaats van HTTP voor alle URL’s.

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

HTTP afdwingen

De volgende regel in het htaccess-bestand voor WordPress dwingt uw bezoekers om HTTP te gebruiken in plaats van HTTPS voor alle URL’s.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} ^https$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}</IfModule>

Domein omleiden naar subdirectory

Met de volgende regel wordt de hoofd-URL van het domein omgeleid naar de submap van uw keuze.

RewriteCond %{HTTP_HOST} ^example.com$
RewriteCond %{REQUEST_URI} !^/sub-directory-name/
RewriteRule (.*) /subdir/$1

Omleidings-URL

Als u twee domeinen heeft die dezelfde website bedienen, zal de .htaccess-regel die hieronder wordt vermeld, het ene domein naar het andere omleiden.

Redirect 301 / http://www.mynewwebsite.com/

WordPress .htaccess beveiligingstips

Het .htaccess-bestand kan ook worden gebruikt om een back-up te maken van WordPress-mappen en WordPress-bestanden op de server. Hier zijn een paar zeer belangrijke regels die gebruikers kunnen toepassen op beveiligde WordPress-websites.

Hoe kan ik de .htaccess beschermen?

Het .htaccess-bestand kan in potentie de hele website besturen. Met dit in gedachten is het van het grootste belang dat de .htaccess is beschermd tegen onbevoegde gebruikers. U kunt het volgende fragment gebruiken om de toegang voor alle onbevoegde gebruikers te beperken.

Kopieer het fragment en plak het in het .htaccess-bestand.

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

Hoe kan ik de toegang tot het WordPress-beheerderspaneel beperken?

Stel je het (vreselijke) scenario voor dat iemand toegang krijgt tot je WordPress-beheerderspaneel. Zo’n aanval kan extreme schade aanrichten of uw website volledig vernietigen.

Om dit te voorkomen, kun je de toegang tot het WordPress-beheerderspaneel beperken tot alleen een of meer specifieke IP-adressen.

Om dit te doen, maakt u een ander .htaccess-bestand en plakt u het volgende fragment erin. Upload het vervolgens via FTP naar de map “www.yourwebsite.com/wp-admin/”.

# Limit logins and admin by IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</Limit>

Tip: Vergeet niet om “xx.xx.xx.xx” in de bovenstaande code te vervangen door uw toegestane IP-adres.

Als iemand nu niet op de lijst met goedgekeurde IP-adressen staat, kan hij of zij niet inloggen op uw site. In plaats daarvan wordt de volgende fout weergegeven:

Interne serverfout

Hoe kan ik een back-up maken van belangrijke bestanden?

U kunt het .htaccess-bestand in WordPress gebruiken om belangrijke bestanden zoals foutenlogboeken, wp-config.php en php.ini te beschermen. Gebruik het volgende fragment:

<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>

Hoe kan ik het bestand wp-config.php beveiligen?

In uw WordPress-installatie wordt het bestand wp-config.php het bestand waarin de hosting, database en andere belangrijke inloggegevens zijn opgeslagen. Het is daarom existentieel dat dit bestand wordt beschermd tegen ongeoorloofde toegang.

Om dit te doen, kopieert u eenvoudig de volgende regels en plakt u ze in uw .htaccess-bestand.

<files wp-config.php>
order allow,deny
deny from all
</files>

Hoe kan ik de map /wp-content/ beveiligen?

De map “wp-content” bevat alle belangrijke bestanden van je thema, de plugins, de media en de bestanden in de cache. Daarom is deze directory het belangrijkste doelwit van hackeraanvallen en maken vooral spammers er graag gebruik van. Om deze map te beschermen tegen ongeoorloofde toegang, maak je een apart .htaccess-bestand aan in de map wp-content. Kopieer en plak vervolgens het volgende fragment in het bestand:

Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>

De bovenstaande regel staat gebruikers alleen toe om bestanden te uploaden met de toegestane extensies (XML, CSS, JPG, JPEG, PNG, GIF en JavaScript). Alle andere bestandstypen worden geweigerd.

Hoe kan ik wp-include-bestanden beschermen?

Sommige delen van uw WordPress-installatie mogen nooit toegankelijk zijn voor de gemiddelde gebruiker. Het wordt altijd aanbevolen om alle toegang tot deze bestanden te blokkeren. U kunt de toegangsbeperkingen instellen door het volgende fragment toe te voegen aan uw .htaccess-bestand.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

Hoe kan ik PHP-uitvoering uitschakelen?

Het beperken van de uitvoering van PHP-code voor alle of geselecteerde mappen van de WordPress-website is een belangrijke beveiligingspraktijk. Maak een htaccess-bestand in een map waarin u geen PHP-scripts wilt uitvoeren en voeg het volgende fragment toe.

<Files *.php>
deny from all
</Files>

Bepaalde WordPress-mappen zoals /wp-includes/ en /wp-content/uploads/ zijn standaard beschrijfbaar. Met dit type machtiging kunnen gebruikers media of verschillende bestandstypen uploaden. Het wordt altijd aanbevolen om PHP-uitvoering in deze mappen uit te schakelen.

Hoe kan ik de toegang tot bestanden beperken?

Het beperken van de toegang tot wp-admin is een belangrijke vereiste, vooral wanneer er meerdere teamleden betrokken zijn bij het beheren en updaten van de site.

In de praktijk betekent dit dat gebruikers geen toegang hebben tot gevoelige bestanden zoals plug-ins, thema’s en activamappen.

.htaccess is een geweldige manier om directe toegang te beschermen om PHP-bestanden van plug-ins en thema’s te bewerken, waardoor het voor hackers moeilijker wordt om kwaadaardige code te injecteren. Om dit te doen, voegt u eenvoudig de volgende regels toe aan het bestand:

RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

Hoe kan ik injectiebeveiliging bieden voor scripts?

Scriptinjectie is een beruchte techniek waarbij de aanvaller kwaadaardige code in de websitecode “injecteert” om gegevens te extraheren of de website over te nemen. Door het volgende fragment toe te voegen aan het WordPress-bestand “.htaccess” kunt u uw website beschermen tegen dergelijke aanvallen.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Hoe kan ik mijn IP-adres blokkeren?

Als iemand je site misbruikt, continu spamt of hackpogingen doet, is zijn IP-adres zichtbaar in het WordPress-beheerdersgedeelte. Om het IP-adres te blokkeren, gebruikt u gewoon het .htaccess-bestand om de toegang tot uw website te beheren. Kopieer het volgende fragment en plak het in het .htaccess-bestand. Hiermee wordt dit specifieke probleem onmiddellijk opgelost. Vergeet niet om het voorbeeld-IP-adres te vervangen door dat van de spammer.

<Limit GET POST>
order allow,deny
deny from 123.456.78.9
allow from all
</Limit>

Hoe kan ik de toegang tot bepaalde bestanden weigeren?

Wilt u de toegang tot specifieke bestanden beperken? Geen probleem. Gebruik de volgende .htaccess-regel om de toegang tot afzonderlijke bestanden te blokkeren.

<files your-file-name.txt>
order allow,deny
deny from all
</files>

Hoe kan ik het zoeken in directory’s uitschakelen?

Ongeoorloofde toegang tot websitebestanden en -mappen is een groot beveiligingsrisico dat mogelijk de hele website kan verlammen.

Door het volgende fragment aan uw .htaccess-bestand toe te voegen, kunt u de toegang tot websitemappen voor alle gebruikers beheren en/of uitschakelen.

# disable directory browsing
Options All -Indexes

HTaccess-regels voor prestatieverbetering

Het .htaccess-bestand in WordPress kan ook worden gebruikt om de prestaties/prestaties van uw website te verbeteren. Kopieer en plak de relevante fragmenten in het .htaccess-bestand

Hoe kan ik de browsercache activeren?

De browsercache is een tijdelijke opslagruimte op uw systeem voor de bestanden die vanuit uw webbrowser zijn gedownload om websites correct weer te geven. Deze bestanden kunnen HTML, CSS, JavaScript bevatten, evenals afbeeldingen en andere multimedia-inhoud.

In het .htaccess-bestand van WordPress kun je regels instellen voor hoe lang bepaalde bestanden in de cache moeten worden opgeslagen. De volgende vervallimieten zijn ingesteld op basis van algemeen gebruik. Als u browsercaching wilt inschakelen, plakt u het volgende fragment in het htaccess-bestand.

<IfModule mod_expires.c>
        ExpiresActive on
        ExpiresDefault                                    "access plus 1 month"
    # CSS
        ExpiresByType text/css                            "access plus 1 year"
    # Data interchange
        ExpiresByType application/json                    "access plus 0 seconds"
        ExpiresByType application/xml                     "access plus 0 seconds"
        ExpiresByType text/xml                            "access plus 0 seconds"
    # Favicon (cannot be renamed!)
        ExpiresByType image/x-icon                        "access plus 1 week"
    # HTML components (HTCs)
        ExpiresByType text/x-component                    "access plus 1 month"
    # HTML
        ExpiresByType text/html                           "access plus 0 seconds"
    # JavaScript
        ExpiresByType application/javascript              "access plus 1 year"
    # Manifest files
        ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
        ExpiresByType text/cache-manifest                 "access plus 0 seconds"
    # Media
        ExpiresByType audio/ogg                           "access plus 1 month"
        ExpiresByType image/gif                           "access plus 1 month"
        ExpiresByType image/jpeg                          "access plus 1 month"
        ExpiresByType image/png                           "access plus 1 month"
        ExpiresByType video/mp4                           "access plus 1 month"
        ExpiresByType video/ogg                           "access plus 1 month"
        ExpiresByType video/webm                          "access plus 1 month"
    # Web feeds
        ExpiresByType application/atom+xml                "access plus 1 hour"
        ExpiresByType application/rss+xml                 "access plus 1 hour"
    # Web fonts
        ExpiresByType application/font-woff2              "access plus 1 month"
        ExpiresByType application/font-woff               "access plus 1 month"
        ExpiresByType application/vnd.ms-fontobject       "access plus 1 month"
        ExpiresByType application/x-font-ttf              "access plus 1 month"
        ExpiresByType font/opentype                       "access plus 1 month"
        ExpiresByType image/svg+xml                       "access plus 1 month"
</IfModule>

Hoe kan ik Gzip-compressie inschakelen?

Gzip is een extreem krachtig compressiealgoritme dat vergelijkbare strings in een tekstbestand vindt en deze tijdelijk vervangt. Dit zal de totale grootte van het bestand aanzienlijk verkleinen. Om deze reden wordt Gzip vaak gebruikt als een belangrijk hulpmiddel voor het optimaliseren van de laadsnelheid van websitepagina’s .

Gzip-compressie wordt vaak gebruikt op serverniveau en veel hostingproviders schakelen dit standaard in. In sommige cache-plug-ins, zoals “WP Rocket“, wordt de bijbehorende code automatisch ingevoegd. Dit kun je vervolgens controleren in je .htaccess bestand. Als dat om de een of andere reden niet werkt, kunt u het volgende fragment toevoegen aan het .htaccess-bestand.

<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
  # Remove browser bugs (only needed for really old browsers)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent
</IfModule>

Hoe kan ik hotlinking van afbeeldingen beheren/beperken?

Het hotlinken van afbeeldingen kan het bandbreedtegebruik aanzienlijk beïnvloeden, omdat elke keer dat een externe bron een afbeelding aanvraagt, uw serverbandbreedte wordt gebruikt om de afbeelding te serveren.

Om het bandbreedteverbruik als gevolg van afbeeldingshotlinks te verminderen, kunt u het volgende codefragment toevoegen aan het .htaccess-bestand:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

htaccess voor WordPress Multisite (WPMU)

Het standaard .htaccess-bestand voor WordPress Multisite wijkt iets af van het standaard .htaccess-bestand van WordPress.

Standaard htaccess voor WPMU-submappen

Als je WordPress multisite netwerk is gebaseerd op submappen, zou het standaard .htaccess-bestand er ongeveer zo uit moeten zien:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Standaard htaccess voor WPMU-subdomeinen

Als je WordPress multisite netwerk is gebaseerd op subdomeinen, zou het standaard .htaccess-bestand er ongeveer zo uit moeten zien:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Resultaat

Als het gaat om serverconfiguratie, is het WordPress .htaccess-bestand een van de belangrijkste bestanden op uw server. Het wordt vaak gebruikt om uw webserver te configureren en om verschillende delen van uw website te beveiligen en te optimaliseren.

JoeWP WordPress Agency - Verzoek

Wil je dat we het .htaccess-bestand in WordPress optimaliseren?