<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//ES">
<HTML>
 <HEAD>
  <TITLE>Pag&iacute;na para probar la instalaci&oacute;n de Apache</TITLE>
 </HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
 <BODY
  BGCOLOR="#FFFFFF"
  TEXT="#000000"
  LINK="#0000FF"
  VLINK="#000080"
  ALINK="#FF0000"
 >
  <H1 ALIGN="CENTER">
   &iexcl;Funcion&oacute;!  &iexcl;El Servidor de Red Apache ha sido instalado en ese sitio!
  </H1>
  <P>
  Si usted puede ver esta pag&iacute;na, entonces los due&ntilde;os de esta
  maqu&iacute;na han instalado el <A HREF="http://www.apache.org/">Servidor de
  Red Apache</A> con ex&iacute;to.  Ahora deben a&ntilde;adir contenido a este directorio
  y reemplazar esta pag&iacute;na, &oacute; apuntar este servidor al contenido real.
  </P>
  <HR>
  <BLOCKQUOTE>
   Si usted esta leyendo esta pag&iacute;na y no es lo que esperaba, por favor
   <STRONG>contacte el administrador de este sitio.</STRONG>
   (Trate de enviar correo electr&oacute;nico a <SAMP>&lt;Webmaster@<EM>domain</EM>&gt;</SAMP>.)
   Aunque este sitio esta utilizando el programa Apache es casi seguro
   que no tiene ninguna conexi&oacute;n con el Apache Group, por eso favor de
   no enviar correo sobre este sitio o su contenido a los autores de
   Apache.  Si lo hace, su mensaje sera
   <STRONG><BIG>ignorado</BIG></STRONG>.
  </BLOCKQUOTE>
  <HR>
  <P>
  La
  <A
   HREF="manual/index.html"
  >documentaci&oacute;n</A>
  de Apache ha sido incluida en esta distribuci&oacute;n.
  </P>
  <P>
  El administrador del sitio esta invitado a usar la siguiente
  imagen para indicar que su sitio es servido por Apache.
  &iexcl;Gracias por usar Apache!
  </P>
  <DIV ALIGN="CENTER">
   <IMG SRC="apache_pb.gif" ALT="">
  </DIV>
 </BODY>
</HTML>
