Web.config configuratiebestanden bij Vevida

Wil je nog beter vindbaar zijn in Google? Of een subdomein z’n eigen website geven? Als je website op Windows Server IIS staat, regel je dit met een web.config XML-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 .web.config XML-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 web.config-bestand te zetten.

Inhoudsopgave

Waarschuwingen

  • Let op! 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. 
  • Onze voorbeelden bevatten soms de code redirectType=”Temporary” (tijdelijk verplaatst). Gebruik deze code tot alles getest is en alles werkt. Daarna kun je het woordje Temporary veranderen in Permanent (permanent verplaatst). 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. 

Je kunt dit regelen in Windows Server IIS met een XML-configuratiebestand, web.config. Hierbij vervang je example\.com (regel 9) door het domein dat je wilt doorsturen; en example.net (regel 11) door de nieuwe domeinnaam. Alleen bij regel 9 zet je een \ voor de punt. 

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <rewrite> <rules> <rule name="Domein doorsturen naar andere website" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^(?:www\.)?example\.com$" /> </conditions> <action type="Redirect" url="http://www.example.net/{R:1}" redirectType="Temporary" /> </rule> </rules> </rewrite> </system.webServer></configuration>

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.

Je kunt dit regelen in Windows Server IIS met een XML-configuratiebestand, web.config

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <rewrite> <rules> <!-- redirect HTTP naar HTTPS --> <rule name="HTTP to HTTPS redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Temporary"/> </rule> </rules> </rewrite> </system.webServer></configuration>

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.

Je kunt dit regelen in Windows Server IIS met een XML-configuratiebestand, web.config. Hierbij vervang je example\.com (regel 9) en example.com (regel 11) door de nieuwe domeinnaam. Alleen bij regel 9 zet je een \ voor de punt.

Alles forceren naar www:

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <rewrite> <rules> <rule name="Alle verkeer forceren naar het adres met www" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^www\.example\.com$" negate="true" /> </conditions> <action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Temporary" /> </rule> </rules> </rewrite> </system.webServer></configuration>

Je kunt er natuurlijk ook voor kiezen om alles naar het adres zonder www te forceren:

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <rewrite> <rules> <rule name="Alle verkeer forceren naar het adres zonder www" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^example\.com$" negate="true" /> </conditions> <action type="Redirect" url="http://example.com/{R:1}" redirectType="Temporary" /> </rule> </rules> </rewrite> </system.webServer></configuration>

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.

Op Windows Server voeg je de volgende code toe aan je web.config-bestand:

<?xml version="1.0" encoding="utf-8"?><configuration> <system.webServer> <security> <ipSecurity allowUnlisted="false"> <add ipAddress="203.0.113.15" allowed="true" /> </ipSecurity> </security> </system.webServer></configuration>

Je kunt meerdere IP-adressen opgeven met extra add ipAddress regels. Bijvoorbeeld:

<?xml version="1.0" encoding="utf-8"?><configuration> <system.webServer> <security> <ipSecurity allowUnlisted="false"> <add ipAddress="203.0.113.15" allowed="true" /> <add ipAddress="203.0.113.24" allowed="true" /> <!-- IPv6 --> <add ipAddress="2001:0db8:0a0b:12f0:0000:0000:0000:0001" allowed="true" /> </ipSecurity> </security> </system.webServer></configuration>

Let op: In .NET 5.0 en .NET Core 3.1 werkt dit helaas niet. Je moet je eigen middleware hiervoor schrijven. Microsoft heeft documentatie over het opzetten van een Client IP safelist for ASP.NET Core

Standaarddocumenten instellen voor uw website

Je kunt (de volgorde van) standaarddocumenten voor je website zelf instellen op Windows IIS met een XML-configuratiebestand, web.config. Daarmee kun je bepalen welke bestand de indexpagina van je website (of een onderliggende map) is. We stellen vier bestanden in:

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <defaultDocument> <files> <clear /> <add value="index.php" /> <add value="index.html" /> <add value="index.htm" /> <add value="default.aspx" /> </files> </defaultDocument> </system.webServer></configuration>

  • Kopieer deze code naar een nieuw bestand
  • Sla het bestand op als web.config
  • Upload het bestand web.config naar de map www van je website

Gedetailleerde foutmeldingen instellen voor jouw website

Je kunt uitgebreide of gedetailleerde foutmeldingen voor jouw website zelf instellen op Windows Server IIS met een XML-configuratiebestand web.config:

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <httpErrors errorMode="Detailed" /> </system.webServer> <system.web> <customErrors mode="Off"/> </system.web></configuration>

  • Kopieer deze code naar een nieuw bestand
  • Sla het bestand op als web.config
  • Upload het bestand web.config naar de map www van je website

MIME type toevoegen

In Windows Server IIS kun je zelf extra MIME types toevoegen voor jouw website. 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.

Je kunt MIME types toevoegen op Windows Server IIS in een web.config-bestand:

Hieronder voegen we .air, .svg, .svgz, .woff en .woff2 toe:

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <staticContent> <remove fileExtension=".air" /> <mimeMap fileExtension=".air" mimeType="application/vnd.adobe.air-application-installer-package+zip" /> <remove fileExtension=".svg" /> <mimeMap fileExtension=".svg" mimeType="image/svg+xml" /> <remove fileExtension=".svgz" /> <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" /> <remove fileExtension=".woff" /> <mimeMap fileExtension=".woff" mimeType="application/font-woff" /> <remove fileExtension=".woff2" /> <mimeMap fileExtension=".woff2" mimeType="application/x-font-woff2" /> </staticContent> </system.webServer></configuration>

In IIS moet je een MIME type eerst verwijderen, voor het geval deze toch al op een bovenliggend niveau bestaat. Als de XML-nodes staticContent of system.webServer al bestaan, dan moet je de relevante delen ertussen plaatsen.

Grafisch is de MIME Types feature ook in IIS Manager beschikbaar.

Dynamische compressie inschakelen op Windows Server IIS

Je kunt dynamische compressie inschakelen op Windows Server IIS met een XML-configuratiebestand web.config

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <urlCompression doDynamicCompression="true" /> </system.webServer></configuration>

  • Kopieer deze code naar een nieuw bestand
  • Sla het bestand op als web.config
  • Upload het bestand web.config naar de map www van je website

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:

JoD-duvwwr3in2GB387MWzDi5qF9huZi0A

Je kunt jouw doorschakel domein op Windows Server IIS koppelen aan de webruimte van een ander hostingpakket met een web.config XML-configuratiebestand.

Hierbij vervang je example\.net (regel 9) door jouw doorgeschakelde domeinnaam. Zet daarbij een \ voor de punt.

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <rewrite> <rules> <rule name="Eigen website voor doorgeschakeld domein"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^(www\.)?(example\.net)$" /> </conditions> <action type="Rewrite" url="/{C:1}/{R:1}" /> </rule> </rules> </rewrite> </system.webServer></configuration>

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 Windows Server met behulp van een web.config-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&gt <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;?>

Plaats de volgende XML-code in een web.config-bestand binnen de node system.webServer, om een eigen onderhoudspagina in te stellen.

<rewrite> <rules> <rule name="Onderhoudspagina" stopProcessing="true"> <match url=".?" ignoreCase="false" /> <conditions> <add input="{REMOTE_ADDR}" pattern="^203.0.113.15$" ignoreCase="false" negate="true" /> <add input="{URL}" pattern="^/onderhoud\.php$" ignoreCase="false" negate="true" /> <add input="{URL}" pattern="\.(css|gif|jpe?g|js|png)$" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="/onderhoud.php" /> </rule> </rules></rewrite>

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 web.config XML-configuratiebestand:

<?xml version="1.0" encoding="utf-8"?><configuration> <system.webServer> <rewrite> <rewriteMaps> <rewriteMap name="StaticRedirects"> <add key="/oud1.html" value="/nieuw1.html" /> <add key="/oud2.html" value="/nieuw2.html" /> <add key="/oud3.html" value="/nieuw3.html" /> </rewriteMap> </rewriteMaps> <rules> <rule name="Alle StaticRedirects uitvoeren"> <match url=".*" /> <conditions> <add input="{StaticRedirects:{REQUEST_URI}}" pattern="(.+)" /> </conditions> <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Temporary" /> </rule> </rules> </rewrite> </system.webServer></configuration>

Zelf de PHP-versie veranderen op Windows Server IIS

Plaats de volgende XML-code in een web.config-bestand om de PHP-versie aan te passen. Verander mapnaam in 7.3, 7.4, 8.0, default of latest.

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <handlers> <remove name="PHP" /> <!-- verander mapnaam in één van deze namen: 7.3, 7.4, 8.0, default, latest --> <add name="PHP" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="c:\vevida\php\mapnaam\php-cgi.exe" resourceType="File" /> </handlers> </system.webServer></configuration>

Bestandsnamen met &-teken of andere speciale tekens

Standaard kun je geen bestandsnamen gebruiken met het ampersand teken (&) erin verwerkt, zoals karel&pietje.html. Dit geeft een lelijke server-foutmelding. De reden hiervoor is een serverinstelling ten behoeve van de beveiliging van jouw website. Ook tekens als <, >, :, *, %, en ? zijn niet toegestaan. Wat kun je hieraan doen?

Als je het &-teken gebruikt in een bestandsnaam, dan krijg je de volgende foutmelding:

Server Error in ‘/’ Application … A potentially dangerous Request.Path value was detected

De beste oplossing hiervoor is om het bestand te hernoemen, bijvoorbeeld door het &-teken te vervangen met een underscore (‘_‘): karel_pietje.html.

Wil je toch graag het &-teken gebruiken in de bestandsnaam en URL, dan moet je een web.config-bestand plaatsen met daarin:

<configuration> <system.web> <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,:,*,%,\,?" /> </system.web></configuration>

Verwijder ook : als je bijvoorbeeld MediaWiki installeert.

Als jouw website al gebruik maakt van een web.config-bestand, dan moet je dit eraan toevoegen. Je vindt technische informatie over requestPathInvalidCharacters in de HttpRuntimeSection-documentatie van het .NET Framework.

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 web.config XML-configuratiebestand (Windows Server IIS). 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.

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Eigen website voor subdomein sub"> <match url="(.*)" /> <conditions trackAllCaptures="true"> <add input="{HTTP_HOST}" pattern="^(sub)\.example\.com$" /> <add input="{PATH_INFO}" pattern="^/sub" negate="true" /> </conditions> <action type="Rewrite" url="/{C:1}/{R:1}" /> </rule> </rules> </rewrite> </system.webServer></configuration>

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 web.config-voorbeeld:

...<rule name="Eigen website voor meerdere subdomeinen"> <match url="(.*)" /> <conditions trackAllCaptures="true"> <add input="{HTTP_HOST}" pattern="^(images|assets)\.example\.com$" /> <add input="{PATH_INFO}" pattern="^/(images|assets)" negate="true" /> </conditions> <action type="Rewrite" url="/{C:1}/{R:1}" /> </rule>...

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 web.config 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 (web.config op Windows Server IIS) niet gemaakt wordt, of per ongeluk verwijderd is, zie je hier een voorbeeld om hem zelf te maken.

Plaats de volgende code in een web.config XML-configuratiebestand:

<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <rewrite> <rules> <rule name="WordPress: example.com" patternSyntax="Wildcard"> <match url="*"/> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/> </conditions> <action type="Rewrite" url="index.php"/> </rule> </rules> </rewrite> </system.webServer></configuration>

R
Robert is the author of this solution article.

Was dit antwoord nuttig? Ja Nee

Feedback versturen
Het spijt ons dat we u niet hebben kunnen helpen. Als u feedback geeft, kunnen we het artikel verbeteren.