Probleem: Mod_rewrite inschakelen in Apache 2.2
Mod_rewrite is een Apache-module die het herschrijven van URL's mogelijk maakt. Het inschakelen ervan in Apache 2.2 kan moeilijk zijn als je nieuw bent in serverconfiguratie. Dit proces omvat het wijzigen van Apache-instellingen en het correct activeren van de module.
Mod_Rewrite inschakelen in Apache 2.2
Hoe Mod_Rewrite te activeren
Om mod_rewrite in Apache 2.2 te activeren, volg je deze stappen:
-
Bewerk Apache-configuratiebestanden: Open het hoofd-Apache-configuratiebestand, meestal httpd.conf genoemd. Je kunt dit bestand vinden in de Apache-installatiemap.
-
Verwijder de commentaartekens van de LoadModule-richtlijn: Zoek de regel die zegt:
#LoadModule rewrite_module modules/mod_rewrite.soVerwijder de "#" aan het begin van de regel om de commentaartekens te verwijderen.
-
Herstart de Apache-server: Na het wijzigen van het configuratiebestand, herstart je de Apache-server om de wijzigingen toe te passen. Gebruik een van deze commando's, afhankelijk van je systeem:
-
Voor systemen die init.d gebruiken:
sudo /etc/init.d/apache2 restart -
Voor systemen die systemctl gebruiken:
sudo systemctl restart apache2 -
Voor Windows-gebruikers: Herstart de Apache-service via de Services-beheerconsole of gebruik dit commando:
httpd -k restart
-
Tip: Controleer Mod_Rewrite Status
Om te verifiëren of mod_rewrite actief is, maak je een PHP-bestand aan met deze code:
<?php
if (in_array('mod_rewrite', apache_get_modules())) {
echo "mod_rewrite is ingeschakeld";
} else {
echo "mod_rewrite is niet ingeschakeld";
}
?>
Voer dit bestand uit op je server om de status van mod_rewrite te controleren.
Mod_Rewrite Activering Verifiëren
Herschrijfregels Testen
Na het activeren van mod_rewrite, test je of het correct werkt. Zo kun je de activering verifiëren:
Eenvoudige herschrijfregels maken voor het testen:
-
Maak een .htaccess-bestand aan in je webroot-directory als het nog niet bestaat.
-
Voeg een basis-herschrijfregel toe aan het .htaccess-bestand:
RewriteEngine On RewriteRule ^test-page$ index.php?page=test [L]Deze regel leidt verzoeken voor "test-page" om naar "index.php?page=test".
-
Maak een index.php-bestand aan met deze inhoud:
<?php if (isset($_GET['page']) && $_GET['page'] == 'test') { echo "Herschrijfregel werkt!"; } else { echo "Herschrijfregel werkt niet."; } ?> -
Ga naar "http://joudomein.com/test-page" in je browser. Als je "Herschrijfregel werkt!" ziet, is mod_rewrite actief.
Veelvoorkomende fouten oplossen:
- Als je een 500 Internal Server Error krijgt, controleer dan je Apache-foutenlogboeken voor details.
- Zorg ervoor dat AllowOverride is ingesteld op All in je Apache-configuratie voor de directory die .htaccess bevat.
- Controleer bestandsrechten: .htaccess moet leesbaar zijn voor de webserver.
Tip: Mod_rewrite testen met een aangepaste 404-pagina
Maak een aangepaste 404-foutpagina en gebruik mod_rewrite om alle niet-bestaande URL's ernaar te leiden:
- Maak een bestand genaamd '404.php' aan in je webroot.
- Voeg deze regel toe aan je .htaccess-bestand:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /404.php [L] - Ga naar een niet-bestaande URL op je site. Als je je aangepaste 404-pagina ziet, werkt mod_rewrite.
Succesvolle activering bevestigen:
-
Gebruik de Apache-modulelijst om te controleren of mod_rewrite is geladen:
apachectl -M | grep rewriteAls mod_rewrite actief is, zie je "rewrite_module" in de uitvoer.
-
Maak een PHP-infopagina om geladen modules te controleren:
<?php phpinfo(); ?>Zoek naar "mod_rewrite" in de lijst met geladen modules.
.htaccess Configureren voor Mod_Rewrite
Herschrijfregels Instellen in .htaccess
Het .htaccess-bestand laat je Apache webserver-instellingen configureren op directory-niveau. Bij het gebruik van mod_rewrite, plaats je je herschrijfregels meestal in het .htaccess-bestand.
Basisstructuur van .htaccess-bestand:
-
Schakel de herschrijf-engine in:
RewriteEngine On -
Stel de basis-URL in voor herschrijvingen (optioneel, maar aanbevolen):
RewriteBase / -
Voeg je herschrijfregels toe na deze initiële richtlijnen.
Belangrijkste herschrijfrichtlijnen:
- RewriteCond: Stelt een voorwaarde in voor wanneer een herschrijfregel moet worden toegepast.
- RewriteRule: Definieert hoe een URL moet worden herschreven.
Voorbeelden van herschrijfregels voor veelvoorkomende scenario's:
-
Alle verkeer omleiden naar HTTPS:
RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] -
.php-extensie verwijderen uit URL's:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php [L] -
Schone URL's maken voor een blog:
RewriteRule ^blog/([0-9]+)/([a-zA-Z0-9-]+)$ blog.php?id=$1&title=$2 [L] -
Oude pagina's omleiden naar nieuwe:
RewriteRule ^old-page\.html$ /new-page [R=301,L] -
Toegang blokkeren tot specifieke bestanden of mappen:
RewriteRule ^(private|config)/ - [F]
Tip: Herschrijfregels Debuggen
Om je herschrijfregels te debuggen, kun je rewrite-logging inschakelen in Apache. Voeg de volgende regels toe aan je .htaccess-bestand:
RewriteLog "/pad/naar/rewrite.log"
RewriteLogLevel 3
Dit maakt een logbestand aan met gedetailleerde informatie over het herschrijfproces, wat je helpt problemen in je regels te identificeren.
Test je herschrijfregels voordat je ze gebruikt op een live site. Je kunt online tools of lokale ontwikkelomgevingen gebruiken om te controleren of je regels werken zoals verwacht.
Mod_Rewrite Problemen Oplossen
Veelvoorkomende Problemen en Oplossingen
Bij het gebruik van mod_rewrite kun je enkele problemen tegenkomen. Hier zijn enkele problemen en hun oplossingen:
Rechten- en bestandstoegangsproblemen:
-
Probleem: Apache kan het .htaccess-bestand niet lezen. Oplossing: Controleer de bestandsrechten. Het .htaccess-bestand moet leesbaar zijn voor de webserver. Gebruik dit commando:
chmod 644 .htaccess -
Probleem: Herschrijfregels hebben geen toegang tot bepaalde mappen. Oplossing: Zorg ervoor dat de Apache-gebruiker de juiste rechten heeft om toegang te krijgen tot de vereiste mappen. Je kunt maprechten wijzigen met:
chmod 755 /pad/naar/directory
Conflicten met andere Apache-modules:
-
Probleem: Mod_rewrite conflicteert met mod_alias. Oplossing: Plaats je mod_rewrite-regels voor eventuele Alias- of Redirect-richtlijnen in je Apache-configuratie.
-
Probleem: Mod_rewrite werkt niet met mod_security. Oplossing: Controleer je mod_security-regels en pas ze aan om de benodigde herschrijfbewerkingen toe te staan. Mogelijk moet je specifieke mod_security-regels uitschakelen die interfereren met je herschrijfregels.
Beperkingen van serverconfiguratie:
-
Probleem: Herschrijfregels werken niet in .htaccess-bestanden. Oplossing: Controleer of AllowOverride is ingesteld op All in je Apache-configuratie voor de directory die .htaccess bevat. Voeg dit toe aan je httpd.conf:
<Directory /pad/naar/je/website> AllowOverride All </Directory> -
Probleem: Herschrijfregels werken lokaal maar niet op de live server. Oplossing: Sommige hostingproviders schakelen mod_rewrite uit of beperken de functionaliteit ervan. Neem contact op met je hostingprovider om mod_rewrite in te schakelen of overweeg over te stappen naar een host die het wel ondersteunt.
-
Probleem: Herschrijfregels veroorzaken te veel omleidingen. Oplossing: Controleer je regels op loops. Zorg ervoor dat je voorwaarden specifiek genoeg zijn om oneindige omleidingen te voorkomen. Gebruik de [L]-vlag om de verwerking te stoppen nadat een regel is gematcht.
Tip: Gebruik de RewriteCond-richtlijn
Om je herschrijfregels specifieker te maken en onbedoelde omleidingen te voorkomen, gebruik je de RewriteCond-richtlijn. Hiermee kun je voorwaarden instellen die moeten worden voldaan voordat een RewriteRule wordt toegepast. Bijvoorbeeld:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
Deze regel leidt alleen om naar index.php als het aangevraagde bestand of de aangevraagde map niet bestaat, wat helpt om onnodige omleidingen en mogelijke loops te voorkomen.
RewriteLog gebruiken voor probleemoplossing
Als je toegang hebt tot Apache-configuratiebestanden, schakel dan RewriteLog in om gedetailleerde informatie te krijgen over de verwerking van herschrijfregels:
RewriteLog "/pad/naar/rewrite.log"
RewriteLogLevel 3
Dit maakt een logbestand aan dat je kan helpen problemen in je herschrijfregels te identificeren.
Vergeet niet Apache te herstarten na het maken van wijzigingen aan de configuratiebestanden. Als je nog steeds problemen hebt, controleer dan de Apache-foutenlogboeken voor meer informatie over het probleem.





