Wil je nog beter vindbaar zijn in Google? Of een subdomein z’n eigen website geven? Als je website op een Linux Server staat, regel je dit met een .htaccess-bestand. Hieronder vind je deze (en meer) voorbeelden, die je eenvoudig aanpast. Upload het bestand via FTP naar jouw website en het werkt meteen.
Je plaatst een .htaccess-configuratiebestand in de map /www van jouw website. Daarmee gelden de instellingen voor de hele site. Onderliggende mappen kun je eigen instellingen geven door daarin een ander .htaccess-bestand te zetten.
Inhoudsopgave
- Waarschuwingen
- Domein doorsturen naar andere website
- HTTPS-verbinding voor alle pagina’s
- Domeinen doorsturen naar één adres
- Website alleen zichtbaar via jouw eigen IP-adres
- Standaarddocumenten instellen voor uw website
- Mime types toevoegen
- Onderhoudspagina instellen
- Oude pagina naar nieuwe pagina doorsturen
- Subdomein een website geven
- Meerdere subdomein groeperen in één (1) rule
- WordPress permalinks
Waarschuwingen
- Gebruik geen .htaccess bestanden op Windows Server IIS. De voorbeelden op onze website zijn specifiek geschreven voor Linux Apache. Web.config is native op Windows.
- Sommige opdrachten zoals Order of PHP_FLAG zorgen ervoor dat de site vastloopt. Gebruik die code niet!
- Bij een .htaccess-bestand betekent status 302 “Tijdelijk verplaatst” en 301 “Permanent verplaatst”. Wij communiceren overal de 302. Activeer de 301 pas als alles getest is en werkt. Deze opdracht komt namelijk in je browsercache te staan en anders kun je alleen testen in een incognito/privacy-venster.
Domein doorsturen naar andere website
Bezoekers van jouw domeinnaam kun je eenvoudig doorsturen naar een andere website. Dat is handig als je nu een nieuwe domeinnaam gebruikt; of wanneer jouw website bij een andere provider staat.
Stuur jouw domein door naar een andere website op Linux Apache door de onderstaande code te plakken in een .htaccess-configuratiebestand. Vervang example\.com (regel 3) door het domein dat je wilt doorsturen; en example.net (regel 4) door de nieuwe domeinnaam. Alleen bij regel 3 zet je een \ voor de punt.
RewriteEngine On # Domein doorsturen naar andere website RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ RewriteRule (.*) http://example.net/$1 [L,R=302]
HTTPS-verbinding voor alle pagina’s
Heb je een SSL-certificaat voor jouw website? Dan is het belangrijk dat alle pagina’s via HTTPS worden bezocht. Bezoekers wisselen anders mogelijk tussen een onbeveiligde en een beveiligde verbinding. Ook kunnen browsers fouten melden als delen van de beveiligde pagina via een onbeveiligde verbinding worden geserveerd.
Een HTTPS-verbinding voor alle pagina’s regel je eenvoudig op Linux Apache door de onderstaande code te plakken in een .htaccess-configuratiebestand:
RewriteEngine on RewriteCond %{HTTPS} Off [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
Domeinen doorsturen naar één adres
Domeinnamen met Registreren + DNS als pakket kun je eenvoudig aan een website verbinden. De website van example.com is dan bijvoorbeeld ook via example.net te zien. Google straft echter websites, die dezelfde content op meerdere URL’s aanbieden.
Voor een betere vindbaarheid in Google is het verstandig om één adres, ook wel preferred URL of canonical URL genoemd, te gebruiken. Bezoekers van example.net worden dan automatisch doorgestuurd (met een HTTP/301 redirect) naar example.com. Je voorkomt daarmee strafpunten voor dubbele content.
Domeinen doorsturen naar één adres beginnend met www kun je op Linux Apache regelen door de onderstaande code te plakken in een .htaccess-configuratiebestand. Vervang www\.example\.com (regel 3) door het doeladres en zet een \ voor iedere punt. In regel 4 vervang je www.example.com ook door het doeladres, ditmaal zónder \.
RewriteEngine On # Alle verkeer forceren naar het adres met www RewriteCond %{HTTP_HOST} ^(?!:www\.)?example\.com$ [NC] RewriteRule (.*) http://www.example.com/$1 [L,R=302]
Je kunt natuurlijk ook alles forceren naar het adres zonder www
RewriteEngine On # Alle verkeer forceren naar het adres zonder www RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule (.*) https://example.com/$1 [L,R=302]
Website alleen zichtbaar via jouw eigen IP-adres
Soms is het handig om jouw website (tijdelijk) af te schermen voor anderen. Bijvoorbeeld als je nog volop bezig bent met de ontwikkeling van jouw website. Deze voorbeeldcode zorgt ervoor dat de site alleen zichtbaar is als je die via jouw eigen IP-adres bezoekt.
Andere bezoekers, ook zoekmachines, krijgen HTTP/403 Forbidden te zien. Zodra jouw website klaar is, verwijder de code uit het .htaccess– of web.config-bestand. De site is dan weer gewoon zichtbaar voor iedereen en wordt geïndexeerd door zoekmachines.
Let op: in dit voorbeeld gaan we ervan uit dat 203.0.113.15 jouw IP-adres is. Vervang dit door jouw echte IP.
Misschien wil je bezoekers liever vertellen dat je tijdelijk onderhoud pleegt aan de website? Dat kun je doen door een eigen onderhoudspagina in te stellen.
Maak je website tijdelijk alleen zichtbaar via jouw eigen IP-adres door de onderstaande code te plakken in een Linux Apache .htaccess-configuratiebestand:
<RequireAny>Require all denied Require ip 203.0.113.15 </RequireAny>
Je kunt meerdere IP-adressen ingeven door extra Require ip regels te maken. Bijvoorbeeld:
<RequireAny> Require all denied Require ip 203.0.113.15 Require ip 203.0.113.24 # IPv6 Require ip 2001:0db8:0a0b:12f0:0000:0000:0000:0001 </RequireAny>
Standaarddocumenten instellen voor uw website
Je kunt (de volgorde van) standaarddocumenten voor je website zelf instellen op Linux Apache met een .htaccess configuratiebestand. Daarmee kun je bepalen welke bestand de indexpagina van je website (of een onderliggende map) is. We stellen vier bestanden in:
DirectoryIndex index.php index.html index.htm test.html
Mime types toevoegen
In Linux Apache kun je zelf extra MIME types toevoegen voor jouw website in een .htaccess bestand. Een MIME type koppelt een bestandsextensie zoals .woff2 aan het type application/font-woff2 (next generation Web Font Format). In dit artikel laten we je zien hoe je MIME types toevoegt aan jouw website.
Een MIME type schrijf als twee aanduidingen gescheiden door een schuine streep: MIME type/subtype.
Hieronder voegen we .air, .svg, .svgz, .woff en .woff2 toe
In Apache gebruik je AddType voor het definiëren van MIME types. Je geeft hier de omgekeerde volgorde op: type/subtype MIME.
AddType application/vnd.adobe.air-application-installer-package+zip .air AddType image/svg+xml .svg AddType image/svg+xml .svgz AddType application/font-woff .woff AddType application/x-font-woff2 .woff2
Eigen website voor doorgeschakeld domein
Domeinen met Registreren + DNS als pakket kun je ook een eigen website geven. Ze maken dan gebruik van het (Webhosting, WordPress, of Webhosting Win) hostingpakket van een andere website. De website van jouw doorgeschakelde domein plaats je in een eigen map.
In dit voorbeeld is example.com een domeinnaam met hostingpakket. Een website voor het doorgeschakelde domein example.net plaats je dan bijvoorbeeld in de map /www/example.net. Hierbij is het belangrijk dat je in Mijn Account het doorgeschakelde domein hebt gekoppeld aan een hoofddomein bij Vevida:
Plaats de volgende code in een .htaccess bestand en upload het via FTP naar de /www map van jouw website met hostingpakket.
RewriteEngine On # Eigen website voor de website example.net. RewriteCond %{HTTP_HOST} ^(www\.)?(example\.net)$ RewriteRule (.*) /example.net/$1 [L]
Vervang wederom example\.net door jouw doorgeschakelde domeinnaam. Vervang /mapnaam door de naam in de map www, waarin je de site hebt gezet voor example.net.
Let op: je moet een .htaccess met daarin alleen RewriteEngine On plaatsen in de mappen van elk subdomein.
Onderhoudspagina instellen
Waarom zou je een onderhoudspagina instellen? Soms is het handig om een website tijdelijk af te schermen voor bezoekers. Bijvoorbeeld wanneer je achter de schermen bezig bent met het bijwerken van je site. In dit voorbeeld laten we zien hoe je dat doet.
In dit voorbeeld laten we zien hoe je je website in een onderhoudsmode kunt zetten op Linux. Op Linux maak je hiervoor gebruik van een .htaccess bestand.
Daarnaast bevat dit voorbeeld een onderhoud.php-bestand met de melding die getoond wordt aan bezoekers. Pas de tekst en vormgeving gerust naar jouw smaak aan, want naast het bestand onderhoud.php worden bestanden met de extensies .css, .gif, .jpg, .jpeg en .png uitgesloten van herschrijven. Dit betekent dat je deze bestanden daarom ook kunt gebruiken, zolang ze maar in de map www staan.
Let op: in dit voorbeeld gaan we ervan uit dat 203.0.113.15 jouw IP-adres is. Vervang dit door jouw echte IP.
De beide bestanden (onderhoud.php en web.config of .htaccess) plaats je in de map /www van jouw site. Ondertussen kun jij wél alle pagina’s bekijken vanaf jouw eigen IP-adres.
Wil je liever alle bezoekers blokkeren en de website alleen zichtbaar houden voor jouw IP? Zie ons artikel Website alleen zichtbaar via jouw eigen IP-adres.
<?php header($_SERVER["SERVER_PROTOCOL"]." 503 Service Unavailable", true, 503); ?> <!DOCTYPE html> <html lang="nl"> <head> <meta charset="utf-8"> <meta name="robots" content="NOINDEX,NOFOLLOW"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Website tijdelijk in onderhoud</title> <style> html { font-size: 100%; } .maintenance__body { margin: 0; font: 1em/1.4 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #f4f4f4; color: #555; } .maintenance__container { padding: 2.8em 1em; margin: auto; background-color: #fff; border: 1px solid #ddd; border-radius: 8px; } .maintenance__header { margin: 0 0 .7em; font-size: 2em; font-weight: 400; line-height: 1.2; } .maintenance__paragraph { margin: 0 0 1.4em; } @media (min-width: 48em) { .maintenance__container { max-width: 28em; padding-left: 2em; padding-right: 2em; margin-top: 7em; } } </style> </head> <body class="maintenance__body"> <div class="maintenance__container"> <h1 class="maintenance__header">Website tijdelijk in onderhoud</h1> <p class="maintenance__paragraph">Sorry, we werken op dit moment hard aan de website. Binnenkort is die gewoon weer beschikbaar. We zien u graag snel weer terug!</p> </div> </body> </html> <?php exit; ?>
Een eigen onderhoudspagina kun je instellen door de onderstaande code te plakken in een .htaccess-configuratiebestand:
RewriteEngine on RewriteCond %{REMOTE_ADDR} !^203.0.113.15$ RewriteCond %{REQUEST_URI} !^/onderhoud\.php$ RewriteCond %{REQUEST_URI} !\.(css|gif|jpe?g|js|png)$ RewriteRule .? /onderhoud.php [L]
Oude pagina naar nieuwe pagina doorsturen
Bij grote wijzigingen of reorganisaties van je site is het wel eens nodig om het verkeer van een oude naar een nieuwe pagina door te sturen. Ook voor het behouden van de positie in zoekmachines is dit noodzakelijk. In dit voorbeeld gaan we de drie oude pagina’s doorsturen naar de nieuwe pagina’s.
Plaats de volgende code in een .htaccess bestand:
RewriteEngine on RewriteRule ^oud1\.html /nieuw1.html [R=302,L] RewriteRule ^oud2\.html /nieuw2.html [R=302,L] RewriteRule ^oud3\.html /nieuw3.html [R=302,L]
Subdomein een website geven
Je subdomein zoals sub.example.com kun je ook een eigen website geven. De website van jouw subdomein plaats je in een eigen map met dezelfde naam, bijvoorbeeld /www/sub.
Een eigen website voor een subdomein regel je door onderstaande code te plaatsen in een .htaccess-configuratiebestand. In de voorbeelden hieronder vervang je (sub)\.example\.com door jouw subdomein plus domeinnaam. Zet ook haakjes om het subdomein en plaats een \ voor iedere punt.
Een subdomein kan bijvoorbeeld ook shop.example.com, webshop.example.com of kantoor.example.com zijn.
RewriteEngine On. # Eigen website voor subdomein RewriteCond %{HTTP_HOST} ^(sub)\.example\.com$ RewriteCond %{PATH_INFO} !^/sub RewriteRule (.*) /%1/$1 [L,END]
Meerdere subdomein groeperen in één (1) rule
Geavanceerde gebruikers kunnen meerdere subdomeinen groeperen in één (1) regel. Zodoende hoef je voor tien subdomeinen niet tien keer bijna dezelfde regels te maken. Wel moeten alle subdomeinen op opgegeven worden. Een kort .htaccess-voorbeeld:
RewriteEngine On # Let op! Er moet een .htaccess in de mappen van elk subdomein staan met de tekst RewriteEngine On # Eigen website voor meerdere subdomeinen tegelijk. RewriteCond %{HTTP_HOST} ^(images|assets|js)\.example\.com$ RewriteCond %{PATH_INFO} !^/(images|assets|js) RewriteRule (.*) /%1/$1 [L,END]
In dit voorbeeld worden de subdomeinen images, assets en js herschreven. De pipe (|) vertaalt zich naar “of”, dus:
- is de HTTP_HOST images.example.com, of assets.example.com, of js.example.com?
- en is PATH_INFO niet images, of assets, of js?
- herschrijf het request dan naar /subdomein
de $1 in RewriteRule zorgt ervoor dat het opgevraagde bestand ook meegegeven wordt, bijvoorbeeld afbeelding.jpg (/images/afbeelding.jpg)
Let op: je moet een .htaccess met daarin alleen RewriteEngin On plaatsen in de doel-map /sub
WordPress permalinks
Permalinks zijn de permanente links van jouw berichten, pagina’s, categorieën en tags in WordPress. Anderen gebruiken permalinks om daarnaar te verwijzen. Permalinks zijn daarom bedoeld om voor langere tijd te blijven bestaan.
Voor mensen (en dus ook zoekmachines) is het beter om duidelijke, leesbare URLs te gebruiken. Een mooie permalink ziet er dan bijvoorbeeld uit als /nieuws/titel-van-jouw-bericht in plaats van /index.php?p=143.
‘Mooie’ permalinks kun je inschakelen in WordPress. Daarvoor is het nodig dat je eerst via Mijn Account schrijfrechten instelt voor /www . WordPress maakt dan automatisch een .htaccess configuratiebestand met de juiste instellingen.
Vervolgens kun je in de WP-admin onder het kopje Instellingen en dan Permalinks kiezen hoe de URLs op jouw website eruit moeten zien.
Als het bijhorende bestand (.htaccess op Linux Apache server) niet gemaakt wordt, of per ongeluk verwijderd is, zie je hier een voorbeeld om hem zelf te maken.
Plaats de volgende code in een .htaccess bestand:
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]