<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
 <HEAD>
  <TITLE>Test Pagina voor de Apache Installatie op deze Web Site</TITLE>
  <!-- Translated Tue Aug 17 20:57:17 GMT 1999 - dirkx@webweaving.org -->
 </HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
 <BODY
  BGCOLOR="#FFFFFF"
  TEXT="#000000"
  LINK="#0000FF"
  VLINK="#000080"
  ALINK="#FF0000"
 >
  <H1 ALIGN="CENTER">
   Alles Werkt! De Apache Web Server is geinstalleerd op deze Web Site
  </H1>
  <P>
  Mocht u deze pagina zien, dan betekent dat, dat de eigenaren van dit
  domein zojuist een nieuwe Apache Web
  Server hebben geinstalleerd. Nu moet men nog de echte inhoud gaan
  toevoegen, en moet men deze pagina gaan vervangen door de echte web
  site. 
  </P>
  <HR>
  <BLOCKQUOTE>
   Mocht u deze pagina zien, in plaats van de pagina of web site die u 
   verwachtte, neem dan <STRONG>contact op met de beheerder van
   deze site</STRONG>. Bijvoorbeeld door een berichtje te sturen naar
   <SAMP>&lt;Webmaster@<EM>dit-domain</EM>&gt;</SAMP>.
   <P>
   Alhoewel deze web site gebruik maakt van de Apache Software is er 
   verder geen enkele relatie tussen de beheerders van deze web site en
   de Apache Groep (die de web software geschreven heeft). Het heeft dus
   <BIG><STRONG>absoluut</STRONG></BIG>
   geen zin de web software auteurs een emailtje te sturen. Mocht u dat
   toch doen, dan wordt uw bericht gewoon <STRONG><BIG>genegeerd</BIG></STRONG>.
  </BLOCKQUOTE>
  <HR>
  <P>
  De 
  <A HREF="manual/index.html" >handleiding</A> voor de apache web
  server software maakt deel uit van deze distributie.
  </P>
  <P>
  Als beheerder of <I>webmaster</I> is het u toegestaan het onderstaande 
  plaatje vrijelijk te gebruiken op uw 'Apache Powered' web site. Bedankt
  voor het kiezen voor, en gebruiken van, Apache!
  </P>
  <DIV ALIGN="CENTER">
   <IMG SRC="apache_pb.gif" ALT="Klein 'Powered by Apache' Logotje">
  </DIV>
 </BODY>
</HTML>
