In dit artikel verkennen we de fundamentele principes van het gebruik van het .htaccess-bestand, dat cruciaal is voor het verbeteren van SEO. Dit bestand zorgt voor een correcte indexering van pagina's door zoekmachines. We leren hoe u redirects beheert, beveiliging configureert en prestaties verbetert. Daarnaast geven we tips over hoe u dit bestand zelfstandig kunt configureren.
Waarom .htaccess nodig is
Het .htaccess-bestand fungeert als een soort "afstandsbediening" voor webontwikkelaars op Apache-servers. Het biedt handige tools voor het aanpassen van verschillende parameters en het beheren van het gedrag van een website. Wanneer directe toegang tot de belangrijkste configuratiebestanden van de server niet beschikbaar is (zoals vaak het geval is bij virtuele hosting, bijvoorbeeld), wordt .htaccess een handige tool voor het maken van noodzakelijke wijzigingen.
Htaccess bevindt zich vaak in de root-map van uw site of in die mappen waar speciale configuratie nodig is. Als u bijvoorbeeld WordPress gebruikt, kan de configuratie worden uitgevoerd via de Yoast SEO-plug-in, die we hebben besproken in het artikel over Robots.txt configurerenIn andere gevallen is het voldoende om naar de gewenste map te gaan en het bestaande .htaccess-bestand te bewerken of het bestand aan te maken als dat nog niet is gebeurd.
Het .htaccess-bestand configureren
301 Omleiden htaccess
Een 301-redirect in het .htaccess-bestand kan worden vergeleken met een permanente redirect op een website. Het informeert zoekmachines en browsers dat de pagina nu permanent op een nieuw adres staat en suggereert om bladwijzers bij te werken en te indexeren. Een dergelijke redirect wordt meestal gebruikt wanneer een pagina wordt verplaatst of verwijderd om de ranking in zoekresultaten te behouden en bezoekers naar de nieuwe locatie te redirecten.
Om redirects te activeren, moet u de overeenkomstige opdracht in het .htaccess-bestand inschakelen:
RewriteEngine on
Hierna kunt u de eenvoudigste vorm van omleiding configureren:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
Een soortgelijke omleiding met behulp van de OmleidenPermanent richtlijn ziet er als volgt uit:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Dit zijn de makkelijkste omleidingsmethoden om te configureren. Laten we eens kijken naar een configuratie die andere, meer geavanceerde typen omleidingen gebruikt met de mod_rewrite module:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]
# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>
Een 302 redirect .htaccess, die tijdelijke verplaatsing aangeeft, wordt veel minder vaak aangetroffen. Hier is een voorbeeld van zo'n instelling:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Richtlijn FoutDocument
Met deze instelling kunt u bepalen wat de gebruiker ziet wanneer er HTTP-fouten op uw site optreden. In plaats van de standaardfoutmelding kunt u uw eigen pagina weergeven, die informatiever is voor de bezoeker en hen helpt te begrijpen wat er is gebeurd. Volg gewoon deze syntaxis voor gebruik:
ErrorDocument <error_code> <URL_page>
Bijvoorbeeld
ErrorDocument 404 /errors/not_found.html
Betekent dat wanneer een 404 fout optreedt, de pagina op /fouten/niet_gevonden.html wordt geopend. Absolute URL's worden op vergelijkbare wijze gespecificeerd:
ErrorDocument 500 http://example.com/errors/server_error.html
Dit voorbeeld geeft de weergave van de server_fout.html pagina op http://example.com/errors/ in het geval van een 500 fout.
Toegang tot een sitedirectory weigeren
Het .htaccess-bestand heeft de opdracht Weigeren van alle, wat helpt om toegang tot bepaalde mappen of bestanden op uw webserver te weigeren. Dit kan handig zijn als u privé-informatie of belangrijke bestanden wilt verbergen voor bezoekers van uw site om de beveiliging van uw gegevens te waarborgen.
Om het weergeven van alle beschikbare mappen uit te schakelen, moet u de volgende regel toevoegen:
Options -Indexes
Een voorbeeld van het blokkeren van de toegang tot een specifieke directory ziet er als volgt uit:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
Op dezelfde manier kunt u de toegang tot een enkel bestand weigeren:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Of voor een reeks bestanden op extensie:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Toegang via IP blokkeren
Toegang blokkeren via IP in het .htaccess-bestand is een methode waarmee u de toegang tot uw website kunt beperken voor specifieke IP-adressen of hun groepen. Dit kan handig zijn als u de toegang tot uw site of de specifieke onderdelen ervan wilt voorkomen voor bepaalde personen of ongewenste bots.
Het blokkeren van een enkel IP-adres gebeurt met de opdracht:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
Het blokkeren van meerdere IP-adressen gebeurt op een vergelijkbare manier door het dupliceren van de "Weigeren van" regel met de vereiste adressen.
Voor het blokkeren van een reeks IP-adressen:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
Om alleen toegang voor specifieke IP's toe te staan, voegt u de volgende code toe:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
Voor een volledige toegangsweigering gebruikt u de richtlijn Weigeren van alleen voor het blokkeren van adressen door middel van een masker, specificeer Weigeren van 11.22.
Waar, 11.22 is het IP-adres maskeren.
Bezoekers blokkeren via User-Agent
Het blokkeren van gebruikers door User-Agent in het .htaccess-bestand is een methode om te bepalen wie toegang heeft tot uw webserver op basis van informatie over de browser die de bezoeker gebruikt. De User-Agent-string bevat gegevens over de browser die een persoon gebruikt om te communiceren met uw server, en dankzij deze informatie kunt u de toegang voor bepaalde gebruikers beperken.
De meest gebruikelijke manier om te blokkeren via User-Agent is door gebruik te maken van mod_rewrite:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>
In dit voorbeeld:
- RewriteCond %{HTTP_USER_AGENT} wordt gebruikt om de User-Agent-tekenreeks te controleren.
- ^Bot1, ^Bot2, ^Bot3 zijn voorbeelden van User-Agent strings die we willen blokkeren. De NC modifiers geven aan dat de vergelijking hoofdlettergevoelig moet zijn.
- RewriteRule ^.*$ - [F,L] is van toepassing op de aanvraag als aan een van de RewriteCond-voorwaarden is voldaan. Het stuurt een antwoord met de statuscode 403 Forbidden (F) en stopt met het verwerken van regels (L).
Cachen in htaccess
Door caching te configureren via het .htaccess-bestand, wordt uw site sneller geladen voor gebruikers. Het werkt als volgt: bepaalde bestanden, zoals afbeeldingen, CSS-stijlen en JavaScript-scripts, worden na de eerste keer laden opgeslagen in de cache van de browser van de gebruiker. De browser kan deze bestanden nu uit de cache gebruiken in plaats van ze telkens opnieuw te laden vanaf de server wanneer de gebruiker een pagina bezoekt. Dit verkort de laadtijd en verbetert de prestaties van de site.
Overweeg een voorbeeld:
# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
Voor bronnen die regelmatig worden bijgewerkt, is het daarentegen noodzakelijk om caching uit te schakelen:
# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>
Optimaliseren van siteprestaties
De Politia Militar hield zelfs tijdens de pre-carnaval festiviteiten de zaken al nauwlettend in de gaten. mod_deflate en mod_gzip modules in Apache helpen bij het comprimeren van informatie die de server naar de apparaten van gebruikers stuurt. Hierdoor worden de bestanden kleiner, wat het laden van de pagina versnelt. Het is echter belangrijk om te onthouden dat de ondersteuning en configuratie van deze modules kan variëren, afhankelijk van uw server.
Voorbeeld van het gebruik van de mod_deflate module:
<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Voorbeeld voor mod_gzip:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>
We hebben de meest gebruikte richtlijnen besproken. U kunt uzelf vertrouwd maken met alle mogelijkheden van het bestand in de officiële documentatie.
Hoe de functionaliteit van het .htaccess-bestand te controleren
Om te controleren of uw .htaccess-bestand op de site werkt, kunt u de volgende stappen uitvoeren:
- Wijzig opzettelijk het .htaccess-bestand met een fout. Als reactie hierop moet de server een fout geven. Deze methode toont of de bewerking van het bestand over het algemeen op de server wordt toegepast.
- Controleer de functionaliteit van specifieke wijzigingen die u hebt aangebracht. Maak bijvoorbeeld een kleine aanpassing aan een van de parameters en beoordeel de aanwezigheid van wijzigingen.
- Controleer de statuscode van de pagina als de wijzigingen gerelateerd zijn aan de respons van de server. Hoe u dit doet, hebben we eerder beschreven in het artikel HTTP-foutcodes: een complete lijst met serverfouten.
- Raadpleeg de serverlogs. Deze geven alle fouten weer die gerelateerd zijn aan de werking van het .htaccess-bestand.
- Voer testen uit met behulp van onlinediensten of -hulpmiddelen.
Het is belangrijk om te begrijpen dat om de functionaliteit van het .htaccess-bestand te controleren, u niet alle stappen in één keer hoeft uit te voeren. Het is voldoende om de meest geschikte methode uit de lijst te kiezen en deze te gebruiken.
Conclusie
Het configureren van het .htaccess-bestand is een belangrijke stap in het optimaliseren en beschermen van uw Apache-server. We hebben onderzocht hoe dit bestand helpt bij het beheren van omleidingen, het comprimeren van inhoud en het garanderen van beveiliging. Zodra u het werken met .htaccess onder de knie hebt, krijgt u een krachtig hulpmiddel om de prestaties en functionaliteit van websites te verbeteren.