Als je hosting hebt bij Vevida kun je een web.config XML-bestand uploaden. Hiermee kun je de vindbaarheid van je site verbeteren. In dit artikel leggen we uit hoe je dat doet.
Inhoudsopgave
- Inleiding
- Domein doorsturen
- HTTPS-verbinding
- Doorsturen naar één adres
- Website alleen zichtbaar via eigen IP-adres
- Standaarddocumenten instellen
- Gedetailleerde foutmeldingen instellen voor jouw website
- MIME type toevoegen
- Dynamische compressie inschakelen
- Onderhoudspagina instellen
- Oude pagina naar nieuwe doorsturen
- PHP-versie veranderen op Windows Server IIS
- Bestandsnamen met speciale tekens
- Subdomein een website geven
- Meerdere subdomeinen groeperen
- WordPress permalinks
Inleiding
Een configuratiebestand plaats je 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.
- Deze handleiding is specifiek geschreven voor Linux Apache. Gebruik geen .htaccess bestanden op Windows hosting.
- 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. Deze opdracht komt namelijk in je browsercache te staan en anders kun je alleen testen in een incognito/privacy-venster.
Domein doorsturen
Bezoekers van jouw domeinnaam kun je doorsturen naar een andere website. Dat is handig als je een nieuwe domeinnaam gebruikt of als jouw website bij een andere provider staat.
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
Heb je een SSL-certificaat voor jouw website? Dan is het belangrijk dat alle pagina’s via HTTPS worden bezocht. Je kunt dit regelen in Windows Server IIS.
<?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>
Doorsturen naar één adres
Domeinnamen met DNS kun je aan een website koppelen. De website van example.com is dan bijvoorbeeld ook via example.net te zien. Voor een betere vindbaarheid in Google is het verstandig om één adres (preferred URL of canonical URL) te gebruiken. Bezoekers worden dan doorgestuurd met een HTTP/301 redirect.
Je kunt dit regelen in Windows Server IIS met een XML-configuratiebestand. 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>
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 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. Zodra je website klaar is verwijder je de code weer. De site is dan weer zichtbaar voor iedereen.
- Let op: In dit voorbeeld gebruiken we 203.0.113.15 als IP-adres is. Vervang dit door jouw echte IP.
- Je kunt voor je bezoekers ondertussen een onderhoudspagina instellen.
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
Je kunt standaarddocumenten voor je website zelf instellen op Windows IIS. 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.
<?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. Een MIME type koppelt een bestandsextensie zoals .woff2 aan het type application/font-woff2 (next generation Web Font Format).
- 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 al op een bovenliggend niveau bestaat. Als de XML-nodes staticContent of system.webServer al bestaan moet je de relevante delen ertussen plaatsen. Grafisch is de MIME Types feature ook in IIS Manager beschikbaar.
Dynamische compressie inschakelen
Je kunt dynamische compressie inschakelen op Windows Server IIS.
<?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. Je kunt jouw doorschakel domein op Windows Server IIS koppelen aan de webruimte van een ander hostingpakket.
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
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.
<?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;?>
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 doorsturen
Je kunt verkeer van een oude naar een nieuwe pagina doorsturen. 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.
<?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>
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 speciale tekens
Wil je graag de & of andere tekens gebruiken in een bestandsnaam of URL dan moet je een web.config-bestand plaatsen met daarin:
<configuration> <system.web> <httpRuntime requestPathInvalidCharacters="<,>,:,*,%,\,?" /> </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 kun je een eigen website geven. De website van jouw subdomein plaats je in een eigen map met dezelfde naam. Een eigen website voor een subdomein regel je door onderstaande code te plaatsen in een web.config XML-configuratiebestand.
<?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 subdomeinen groeperen
Geavanceerde gebruikers kunnen meerdere subdomeinen groeperen in één 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>...
WordPress permalinks
Permalinks zijn de permanente links 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.
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>