summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/manual/howto/access.html4
-rw-r--r--docs/manual/howto/access.html.es236
-rw-r--r--docs/manual/howto/access.xml.es214
-rw-r--r--docs/manual/howto/access.xml.meta1
-rw-r--r--docs/manual/howto/auth.html4
-rw-r--r--docs/manual/howto/auth.html.es713
-rw-r--r--docs/manual/howto/auth.xml.es682
-rw-r--r--docs/manual/howto/auth.xml.meta1
-rw-r--r--docs/manual/howto/cgi.html4
-rw-r--r--docs/manual/howto/cgi.html.es615
-rw-r--r--docs/manual/howto/cgi.xml.es594
-rw-r--r--docs/manual/howto/cgi.xml.meta1
-rw-r--r--docs/manual/howto/htaccess.html4
-rw-r--r--docs/manual/howto/htaccess.html.es464
-rw-r--r--docs/manual/howto/htaccess.xml.es475
-rw-r--r--docs/manual/howto/htaccess.xml.meta1
-rw-r--r--docs/manual/howto/http2.html.es283
-rw-r--r--docs/manual/howto/http2.xml.es258
-rw-r--r--docs/manual/howto/http2.xml.meta1
-rw-r--r--docs/manual/howto/index.html4
-rw-r--r--docs/manual/howto/index.xml.es145
-rw-r--r--docs/manual/howto/index.xml.meta1
-rw-r--r--docs/manual/howto/public_html.html4
-rw-r--r--docs/manual/howto/public_html.xml.es198
-rw-r--r--docs/manual/howto/public_html.xml.meta1
25 files changed, 4908 insertions, 0 deletions
diff --git a/docs/manual/howto/access.html b/docs/manual/howto/access.html
index 0ce25e0e0a..77bb4ed162 100644
--- a/docs/manual/howto/access.html
+++ b/docs/manual/howto/access.html
@@ -4,6 +4,10 @@ URI: access.html.en
Content-Language: en
Content-type: text/html; charset=ISO-8859-1
+URI: access.html.es
+Content-Language: es
+Content-type: text/html; charset=ISO-8859-1
+
URI: access.html.fr
Content-Language: fr
Content-type: text/html; charset=ISO-8859-1
diff --git a/docs/manual/howto/access.html.es b/docs/manual/howto/access.html.es
new file mode 100644
index 0000000000..54158e1a97
--- /dev/null
+++ b/docs/manual/howto/access.html.es
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
+<!--
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ This file is generated from xml source: DO NOT EDIT
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ -->
+<title>Control de Acceso - Servidor Apache HTTP Versi&#243;n 2.4</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
+<script src="../style/scripts/prettify.min.js" type="text/javascript">
+</script>
+
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p>
+<p class="apache">Versi&#243;n 2.4 del Servidor HTTP Apache</p>
+<img alt="" src="../images/feather.png" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentaci&#243;n</a> &gt; <a href="../">Versi&#243;n 2.4</a> &gt; <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Control de Acceso</h1>
+<div class="toplang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/access.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/access.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/access.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a></p>
+</div>
+
+ <p>El control de acceso, hace referencia a todos los medios que proporcionan
+ una forma de controlar el acceso a cualquier recurso. Esta parte est&#225;
+ separada de <a href="auth.html">autenticaci&#243;n y autorizaci&#243;n</a>.</p>
+</div>
+<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">M&#243;dulos y Directivas relacionados</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#host">Control de Acceso por host</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#env">Control de acceso por variables arbitrarias.</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#rewrite">Control de acceso con mod_rewrite</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">M&#225;s informaci&#243;n</a></li>
+</ul><h3>Consulte tambi&#233;n</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">M&#243;dulos y Directivas relacionados</a></h2>
+
+ <p>El control de acceso puede efectuarse mediante diferentes m&#243;dulos. Los
+ m&#225;s importantes de &#233;stos son <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code> y
+ <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>. Tambi&#233;n se habla en este documento de
+ el control de acceso usando el m&#243;dulo <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="host" id="host">Control de Acceso por host</a></h2>
+ <p>
+ Si lo que se quiere es restringir algunas zonas del sitio web, bas&#225;ndonos
+ en la direcci&#243;n del visitante, esto puede ser realizado de manera
+ f&#225;cil con el m&#243;dulo <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>.
+ </p>
+
+ <p>La directiva <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
+ proporciona una variedad de diferentes maneras de permitir o denegar el acceso a los recursos. Adem&#225;s puede ser usada junto con las directivas:<code class="directive"><a href="../mod/mod_authz_core.html#requireall">RequireAll</a></code>, <code class="directive"><a href="../mod/mod_authz_core.html#requireany">RequireAny</a></code>, y <code class="directive"><a href="../mod/mod_authz_core.html#requirenone">RequireNone</a></code>, estos requerimientos pueden
+ ser combinados de forma compleja y arbitraria, para cumplir cualquiera que
+ sean tus pol&#237;ticas de acceso.</p>
+
+ <div class="warning"><p>
+ Las directivas <code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code>,
+ <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code>, y
+ <code class="directive"><a href="../mod/mod_access_compat.html#order">Order</a></code>,
+ proporcionadas por <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>, est&#225;n obsoletas y
+ ser&#225;n quitadas en futuras versiones. Deber&#225; evitar su uso, y tambi&#233;n
+ los tutoriales desactualizaos que recomienden su uso.
+ </p></div>
+
+ <p>El uso de estas directivas es:</p>
+
+
+ <pre class="prettyprint lang-config">Require host <var>address</var> <br />
+Require ip <var>ip.address</var>
+ </pre>
+
+
+ <p>En la primera l&#237;nea, <var>address</var> es el FQDN de un nombre de
+ dominio (o un nombre parcial del dominio); puede proporcionar m&#250;ltiples
+ direcciones o nombres de dominio, si se desea.
+ </p>
+
+ <p>En la segunda l&#237;nea, <var>ip.address</var> es la direcci&#243;n IP, una
+ direcci&#243;n IP parcial, una red con su m&#225;scara, o una especificaci&#243;n red/nnn
+ CIDR. Pueden usarse tanto IPV4 como IPV6.</p>
+
+ <p>Consulte tambi&#233;n <a href="../mod/mod_authz_host.html#requiredirectives">la
+ documentaci&#243;n de mod_authz_host </a> para otros ejemplos de esta sintaxis.
+ </p>
+
+ <p>Puede ser insertado <code>not</code> para negar un requisito en particular.
+ Note que, ya que <code>not</code> es una negaci&#243;n de un valor, no puede ser
+ usado por si solo para permitir o denegar una petici&#243;n, como <em>not true</em>
+ que no contituye ser <em>false</em>. En consecuencia, para denegar una
+ visita usando una negaci&#243;n, el bloque debe tener un elemento que se eval&#250;a como
+ verdadero o falso. Por ejemplo, si tienes a alguien espameandote tu tabl&#243;n de
+ mensajes, y tu quieres evitar que entren o dejarlos fuera, puedes realizar
+ lo siguiente:
+ </p>
+
+ <pre class="prettyprint lang-config">&lt;RequireAll&gt;
+ Require all granted
+ Require not ip 10.252.46.165
+&lt;/RequireAll&gt;</pre>
+
+
+ <p>Los visitantes que vengan desde la IP que se configura (<code>10.252.46.165</code>)
+ no tendr&#225;n acceso al contenido que cubre esta directiva. Si en cambio, lo que se
+ tiene es el nombre de la m&#225;quina, en vez de la IP, podr&#225;s usar:</p>
+
+ <pre class="prettyprint lang-config">Require not host <var>host.example.com</var>
+ </pre>
+
+
+ <p>Y, Si lo que se quiere es bloquear el acceso desde dominio especifico,
+ podr&#225;s especificar parte de una direcci&#243;n o nombre de dominio:</p>
+
+ <pre class="prettyprint lang-config">Require not ip 192.168.205
+Require not host phishers.example.com moreidiots.example
+Require not host gov</pre>
+
+
+ <p>Uso de las directivas <code class="directive"><a href="../mod/mod_authz_core.html#requireall">RequireAll</a></code>, <code class="directive"><a href="../mod/mod_authz_core.html#requireany">RequireAny</a></code>, y <code class="directive"><a href="../mod/mod_authz_core.html#requirenone">RequireNone</a></code> pueden ser usadas
+ para forzar requisitos m&#225;s complejos.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="env" id="env">Control de acceso por variables arbitrarias.</a></h2>
+
+ <p>Haciendo el uso de <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code>,
+ puedes permitir o denegar el acceso basado en variables de entrono arbitrarias
+ o en los valores de las cabeceras de las peticiones. Por ejemplo para denegar
+ el acceso bas&#225;ndonos en el "user-agent" (tipo de navegador as&#237; como Sistema Operativo)
+ puede que hagamos lo siguiente:
+ </p>
+
+ <pre class="prettyprint lang-config">&lt;If "%{HTTP_USER_AGENT} == 'BadBot'"&gt;
+ Require all denied
+&lt;/If&gt;</pre>
+
+
+ <p>Usando la sintaxis de <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
+ <code>expr</code> , esto tambi&#233;n puede ser escrito de la siguiente forma:
+ </p>
+
+
+ <pre class="prettyprint lang-config">Require expr %{HTTP_USER_AGENT} != 'BadBot'</pre>
+
+
+ <div class="note"><h3>Advertencia:</h3>
+ <p>El control de acceso por <code>User-Agent</code> es una t&#233;cnica poco fiable,
+ ya que la cabecera de <code>User-Agent</code> puede ser modificada y establecerse
+ al antojo del usuario.</p>
+ </div>
+
+ <p>Vea tambi&#233;n la p&#225;gina de <a href="../expr.html">expresiones</a>
+ para una mayor aclaraci&#243;n de que sintaxis tienen las expresiones y que
+ variables est&#225;n disponibles.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="rewrite" id="rewrite">Control de acceso con mod_rewrite</a></h2>
+
+ <p>El flag <code>[F]</code> de <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> causa una respuesta 403 Forbidden
+ para ser enviada. USando esto, podr&#225; denegar el acceso a recursos bas&#225;ndose
+ en criterio arbitrario.</p>
+
+ <p>Por ejemplo, si lo que desea es bloquear un recurso entre las 8pm y las
+ 7am, podr&#225; hacerlo usando <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>:</p>
+
+ <pre class="prettyprint lang-config">RewriteEngine On
+RewriteCond "%{TIME_HOUR}" "&gt;=20" [OR]
+RewriteCond "%{TIME_HOUR}" "&lt;07"
+RewriteRule "^/fridge" "-" [F]</pre>
+
+
+ <p>Esto devolver&#225; una respuesta de error 403 Forbidden para cualquier petici&#243;n
+ despu&#233;s de las 8pm y antes de las 7am. Esta t&#233;cnica puede ser usada para cualquier
+ criterio que desee usar. Tambi&#233;n puede redireccionar, o incluso reescribir estas
+ peticiones, si se prefiere ese enfoque.
+ </p>
+
+ <p>La directiva <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code>,
+ a&#241;adida en la 2.4, sustituye muchas cosas que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
+ tradicionalmente sol&#237;a hacer, y deber&#225; comprobar estas antes de recurrir a
+ </p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="moreinformation" id="moreinformation">M&#225;s informaci&#243;n</a></h2>
+
+ <p>El <a href="../expr.html">motor de expresiones</a> le da una gran
+ capacidad de poder para hacer una gran variedad de cosas basadas en
+ las variables arbitrarias del servidor, y debe consultar este
+ documento para m&#225;s detalles.</p>
+
+ <p>Tambi&#233;n, deber&#225; leer la documentaci&#243;n de <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>
+ para ejemplos de combinaciones de m&#250;ltiples requisitos de acceso y especificar
+ c&#243;mo interact&#250;an.
+ </p>
+
+ <p>Vea tambi&#233;n los howtos de <a href="auth.html">Authenticaci&#243;n y Autorizaci&#243;n</a>
+ </p>
+</div></div>
+<div class="bottomlang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/access.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/access.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/access.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a></p>
+</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comentarios</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+var comments_shortname = 'httpd';
+var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/access.html';
+(function(w, d) {
+ if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
+ d.write('<div id="comments_thread"><\/div>');
+ var s = d.createElement('script');
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+ (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+ }
+ else {
+ d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
+ }
+})(window, document);
+//--><!]]></script></div><div id="footer">
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los t&#233;rminos de <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
+if (typeof(prettyPrint) !== 'undefined') {
+ prettyPrint();
+}
+//--><!]]></script>
+</body></html> \ No newline at end of file
diff --git a/docs/manual/howto/access.xml.es b/docs/manual/howto/access.xml.es
new file mode 100644
index 0000000000..096145f34a
--- /dev/null
+++ b/docs/manual/howto/access.xml.es
@@ -0,0 +1,214 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?>
+<!-- English Revision: 1734357 -->
+<!-- Updated by Luis Gil de Bernabé Pfeiffer lgilbernabe[AT]apache.org -->
+<!-- Reviewed by Sergio Ramos -->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="access.xml.meta">
+<parentdocument href="./">How-To / Tutoriales</parentdocument>
+
+<title>Control de Acceso</title>
+
+<summary>
+ <p>El control de acceso, hace referencia a todos los medios que proporcionan
+ una forma de controlar el acceso a cualquier recurso. Esta parte está
+ separada de <a
+ href="auth.html">autenticación y autorización</a>.</p>
+</summary>
+
+<section id="related"><title>Módulos y Directivas relacionados</title>
+
+ <p>El control de acceso puede efectuarse mediante diferentes módulos. Los
+ más importantes de éstos son <module>mod_authz_core</module> y
+ <module>mod_authz_host</module>. También se habla en este documento de
+ el control de acceso usando el módulo <module>mod_rewrite</module>.</p>
+
+</section>
+
+<section id="host"><title>Control de Acceso por host</title>
+ <p>
+ Si lo que se quiere es restringir algunas zonas del sitio web, basándonos
+ en la dirección del visitante, esto puede ser realizado de manera
+ fácil con el módulo <module>mod_authz_host</module>.
+ </p>
+
+ <p>La directiva <directive module="mod_authz_core">Require</directive>
+ proporciona una variedad de diferentes maneras de permitir o denegar el acceso a los recursos. Además puede ser usada junto con las directivas:<directive
+ module="mod_authz_core">RequireAll</directive>, <directive
+ module="mod_authz_core">RequireAny</directive>, y <directive
+ module="mod_authz_core">RequireNone</directive>, estos requerimientos pueden
+ ser combinados de forma compleja y arbitraria, para cumplir cualquiera que
+ sean tus políticas de acceso.</p>
+
+ <note type="warning"><p>
+ Las directivas <directive module="mod_access_compat">Allow</directive>,
+ <directive module="mod_access_compat">Deny</directive>, y
+ <directive module="mod_access_compat">Order</directive>,
+ proporcionadas por <module>mod_access_compat</module>, están obsoletas y
+ serán quitadas en futuras versiones. Deberá evitar su uso, y también
+ los tutoriales desactualizaos que recomienden su uso.
+ </p></note>
+
+ <p>El uso de estas directivas es:</p>
+
+
+ <highlight language="config">
+Require host <var>address</var> <br/>
+Require ip <var>ip.address</var>
+ </highlight>
+
+ <p>En la primera línea, <var>address</var> es el FQDN de un nombre de
+ dominio (o un nombre parcial del dominio); puede proporcionar múltiples
+ direcciones o nombres de dominio, si se desea.
+ </p>
+
+ <p>En la segunda línea, <var>ip.address</var> es la dirección IP, una
+ dirección IP parcial, una red con su máscara, o una especificación red/nnn
+ CIDR. Pueden usarse tanto IPV4 como IPV6.</p>
+
+ <p>Consulte también <a href="../mod/mod_authz_host.html#requiredirectives">la
+ documentación de mod_authz_host </a> para otros ejemplos de esta sintaxis.
+ </p>
+
+ <p>Puede ser insertado <code>not</code> para negar un requisito en particular.
+ Note que, ya que <code>not</code> es una negación de un valor, no puede ser
+ usado por si solo para permitir o denegar una petición, como <em>not true</em>
+ que no contituye ser <em>false</em>. En consecuencia, para denegar una
+ visita usando una negación, el bloque debe tener un elemento que se evalúa como
+ verdadero o falso. Por ejemplo, si tienes a alguien espameandote tu tablón de
+ mensajes, y tu quieres evitar que entren o dejarlos fuera, puedes realizar
+ lo siguiente:
+ </p>
+
+ <highlight language="config">
+&lt;RequireAll&gt;
+ Require all granted
+ Require not ip 10.252.46.165
+&lt;/RequireAll&gt;
+ </highlight>
+
+ <p>Los visitantes que vengan desde la IP que se configura (<code>10.252.46.165</code>)
+ no tendrán acceso al contenido que cubre esta directiva. Si en cambio, lo que se
+ tiene es el nombre de la máquina, en vez de la IP, podrás usar:</p>
+
+ <highlight language="config">
+Require not host <var>host.example.com</var>
+ </highlight>
+
+ <p>Y, Si lo que se quiere es bloquear el acceso desde dominio especifico,
+ podrás especificar parte de una dirección o nombre de dominio:</p>
+
+ <highlight language="config">
+Require not ip 192.168.205
+Require not host phishers.example.com moreidiots.example
+Require not host gov
+ </highlight>
+
+ <p>Uso de las directivas <directive
+ module="mod_authz_core">RequireAll</directive>, <directive
+ module="mod_authz_core">RequireAny</directive>, y <directive
+ module="mod_authz_core">RequireNone</directive> pueden ser usadas
+ para forzar requisitos más complejos.</p>
+
+</section>
+
+<section id="env"><title>Control de acceso por variables arbitrarias.</title>
+
+ <p>Haciendo el uso de <directive type="section" module="core">If</directive>,
+ puedes permitir o denegar el acceso basado en variables de entrono arbitrarias
+ o en los valores de las cabeceras de las peticiones. Por ejemplo para denegar
+ el acceso basándonos en el "user-agent" (tipo de navegador así como Sistema Operativo)
+ puede que hagamos lo siguiente:
+ </p>
+
+ <highlight language="config">
+&lt;If "%{HTTP_USER_AGENT} == 'BadBot'"&gt;
+ Require all denied
+&lt;/If&gt;
+ </highlight>
+
+ <p>Usando la sintaxis de <directive module="mod_authz_core">Require</directive>
+ <code>expr</code> , esto también puede ser escrito de la siguiente forma:
+ </p>
+
+
+ <highlight language="config">
+Require expr %{HTTP_USER_AGENT} != 'BadBot'
+ </highlight>
+
+ <note><title>Advertencia:</title>
+ <p>El control de acceso por <code>User-Agent</code> es una técnica poco fiable,
+ ya que la cabecera de <code>User-Agent</code> puede ser modificada y establecerse
+ al antojo del usuario.</p>
+ </note>
+
+ <p>Vea también la página de <a href="../expr.html">expresiones</a>
+ para una mayor aclaración de que sintaxis tienen las expresiones y que
+ variables están disponibles.</p>
+
+</section>
+
+<section id="rewrite"><title>Control de acceso con mod_rewrite</title>
+
+ <p>El flag <code>[F]</code> de <directive
+ module="mod_rewrite">RewriteRule</directive> causa una respuesta 403 Forbidden
+ para ser enviada. USando esto, podrá denegar el acceso a recursos basándose
+ en criterio arbitrario.</p>
+
+ <p>Por ejemplo, si lo que desea es bloquear un recurso entre las 8pm y las
+ 7am, podrá hacerlo usando <module>mod_rewrite</module>:</p>
+
+ <highlight language="config">
+RewriteEngine On
+RewriteCond "%{TIME_HOUR}" "&gt;=20" [OR]
+RewriteCond "%{TIME_HOUR}" "&lt;07"
+RewriteRule "^/fridge" "-" [F]
+ </highlight>
+
+ <p>Esto devolverá una respuesta de error 403 Forbidden para cualquier petición
+ después de las 8pm y antes de las 7am. Esta técnica puede ser usada para cualquier
+ criterio que desee usar. También puede redireccionar, o incluso reescribir estas
+ peticiones, si se prefiere ese enfoque.
+ </p>
+
+ <p>La directiva <directive type="section" module="core">If</directive>,
+ añadida en la 2.4, sustituye muchas cosas que <module>mod_rewrite</module>
+ tradicionalmente solía hacer, y deberá comprobar estas antes de recurrir a
+ </p>
+
+</section>
+
+<section id="moreinformation"><title>Más información</title>
+
+ <p>El <a href="../expr.html">motor de expresiones</a> le da una gran
+ capacidad de poder para hacer una gran variedad de cosas basadas en
+ las variables arbitrarias del servidor, y debe consultar este
+ documento para más detalles.</p>
+
+ <p>También, deberá leer la documentación de <module>mod_authz_core</module>
+ para ejemplos de combinaciones de múltiples requisitos de acceso y especificar
+ cómo interactúan.
+ </p>
+
+ <p>Vea también los howtos de <a href="auth.html">Authenticación y Autorización</a>
+ </p>
+</section>
+
+</manualpage>
diff --git a/docs/manual/howto/access.xml.meta b/docs/manual/howto/access.xml.meta
index 605822ecb4..95d284ca3a 100644
--- a/docs/manual/howto/access.xml.meta
+++ b/docs/manual/howto/access.xml.meta
@@ -8,6 +8,7 @@
<variants>
<variant>en</variant>
+ <variant>es</variant>
<variant>fr</variant>
</variants>
</metafile>
diff --git a/docs/manual/howto/auth.html b/docs/manual/howto/auth.html
index a8c8b7e37d..c62314a8bf 100644
--- a/docs/manual/howto/auth.html
+++ b/docs/manual/howto/auth.html
@@ -4,6 +4,10 @@ URI: auth.html.en
Content-Language: en
Content-type: text/html; charset=ISO-8859-1
+URI: auth.html.es
+Content-Language: es
+Content-type: text/html; charset=ISO-8859-1
+
URI: auth.html.fr
Content-Language: fr
Content-type: text/html; charset=ISO-8859-1
diff --git a/docs/manual/howto/auth.html.es b/docs/manual/howto/auth.html.es
new file mode 100644
index 0000000000..4589cc1f93
--- /dev/null
+++ b/docs/manual/howto/auth.html.es
@@ -0,0 +1,713 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
+<!--
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ This file is generated from xml source: DO NOT EDIT
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ -->
+<title>Autenticaci&#243;n y Autorizaci&#243;n - Servidor Apache HTTP Versi&#243;n 2.4</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
+<script src="../style/scripts/prettify.min.js" type="text/javascript">
+</script>
+
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p>
+<p class="apache">Versi&#243;n 2.4 del Servidor HTTP Apache</p>
+<img alt="" src="../images/feather.png" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentaci&#243;n</a> &gt; <a href="../">Versi&#243;n 2.4</a> &gt; <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Autenticaci&#243;n y Autorizaci&#243;n</h1>
+<div class="toplang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/auth.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
+</div>
+
+ <p>Autenticaci&#243;n es cualquier proceso por el cu&#225;l se verifica que uno es
+ quien dice ser. Autorizaci&#243;n es cualquier proceso en el cu&#225;l cualquiera
+ est&#225; permitido a estar donde se quiera, o tener informaci&#243;n la cu&#225;l se
+ quiera tener.
+ </p>
+
+ <p>Para informaci&#243;n de control de acceso de forma gen&#233;rica visite<a href="access.html">How to de Control de Acceso</a>.</p>
+</div>
+<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">M&#243;dulos y Directivas Relacionados</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introducci&#243;n</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">Los Prerequisitos</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Conseguir que funcione</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Dejar que m&#225;s de una persona
+ entre</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Posibles Problemas</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#dbmdbd">M&#233;todo alternativo de almacenamiento de las
+ contrase&#241;as</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#multprovider">Uso de m&#250;ltiples proveedores</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#beyond">M&#225;s all&#225; de la Autorizaci&#243;n</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#socache">Cache de Autenticaci&#243;n</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">M&#225;s informaci&#243;n</a></li>
+</ul><h3>Consulte tambi&#233;n</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">M&#243;dulos y Directivas Relacionados</a></h2>
+
+<p>Hay tres tipos de m&#243;dulos involucrados en los procesos de la autenticaci&#243;n
+ y autorizaci&#243;n. Normalmente deber&#225;s escoger al menos un m&#243;dulo de cada grupo.</p>
+
+<ul>
+ <li>Modos de Autenticaci&#243;n (consulte la directiva
+ <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> )
+ <ul>
+ <li><code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code></li>
+ <li><code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code></li>
+ </ul>
+ </li>
+ <li>Proveedor de Autenticaci&#243;n (consulte la directiva
+ <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> y
+ <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>)
+
+ <ul>
+ <li><code class="module"><a href="../mod/mod_authn_anon.html">mod_authn_anon</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authn_socache.html">mod_authn_socache</a></code></li>
+ </ul>
+ </li>
+ <li>Autorizaci&#243;n (consulte la directiva
+ <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>)
+ <ul>
+ <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authz_dbd.html">mod_authz_dbd</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code></li>
+ <li><code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code></li>
+ </ul>
+ </li>
+</ul>
+
+ <p>A parte de &#233;stos m&#243;dulos, tambi&#233;n est&#225;n
+ <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> y
+ <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>. &#201;stos m&#243;dulos implementan las directivas
+ esenciales que son el centro de todos los m&#243;dulos de autenticaci&#243;n.</p>
+
+ <p>El m&#243;dulo <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> es tanto un proveedor de
+ autenticaci&#243;n como de autorizaci&#243;n. El m&#243;dulo
+ <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> proporciona autorizaci&#243;n y control de acceso
+ basado en el nombre del Host, la direcci&#243;n IP o caracter&#237;sticas de la propia
+ petici&#243;n, pero no es parte del sistema proveedor de
+ autenticaci&#243;n. Para tener compatibilidad inversa con el mod_access,
+ hay un nuevo modulo llamado <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.</p>
+
+ <p>Tambi&#233;n puedes mirar el how-to de <a href="access.html">Control de Acceso </a>, donde se plantean varias formas del control de acceso al servidor.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="introduction" id="introduction">Introducci&#243;n</a></h2>
+ <p>Si se tiene informaci&#243;n en nuestra p&#225;gina web que sea informaci&#243;n
+ sensible o pensada para un grupo reducido de usuarios/personas,
+ las t&#233;cnicas que se describen en este manual, le servir&#225;n
+ de ayuda para asegurarse de que las personas que ven esas p&#225;ginas sean
+ las personas que uno quiere.</p>
+
+ <p>Este art&#237;culo cubre la parte "est&#225;ndar" de c&#243;mo proteger partes de un
+ sitio web que muchos usar&#225;n.</p>
+
+ <div class="note"><h3>Nota:</h3>
+ <p>Si de verdad es necesario que tus datos est&#233;n en un sitio seguro,
+ considera usar <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> como m&#233;todo de autenticaci&#243;n adicional a cualquier forma de autenticaci&#243;n.</p>
+ </div>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="theprerequisites" id="theprerequisites">Los Prerequisitos</a></h2>
+ <p>Las directivas que se usan en este art&#237;culo necesitaran ponerse ya sea
+ en el fichero de configuraci&#243;n principal del servidor ( t&#237;picamente en
+ la secci&#243;n
+ <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> de httpd.conf ), o
+ en cada uno de los ficheros de configuraciones del propio directorio
+ (los archivos <code>.htaccess</code>).</p>
+
+ <p>Si planea usar los ficheros <code>.htaccess</code> , necesitar&#225;s
+ tener en la configuraci&#243;n global del servidor, una configuraci&#243;n que permita
+ poner directivas de autenticaci&#243;n en estos ficheros. Esto se hace con la
+ directiva <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>, la cual especifica
+ que directivas, en su caso, pueden ser puestas en cada fichero de configuraci&#243;n
+ por directorio.</p>
+
+ <p>Ya que estamos hablando aqu&#237; de autenticaci&#243;n, necesitar&#225;s una directiva
+ <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> como la siguiente:
+ </p>
+
+ <pre class="prettyprint lang-config">AllowOverride AuthConfig</pre>
+
+
+ <p>O, si solo se van a poner las directivas directamente en la configuraci&#243;n
+ principal del servidor, deber&#225;s tener, claro est&#225;, permisos de escritura
+ en el archivo. </p>
+
+ <p>Y necesitar&#225;s saber un poco de como est&#225; estructurado el &#225;rbol de
+ directorios de tu servidor, para poder saber donde se encuentran algunos
+ archivos. Esto no deber&#237;a ser una tarea dif&#237;cil, a&#250;n as&#237; intentaremos
+ dejarlo claro llegado el momento de comentar dicho aspecto.</p>
+
+ <p>Tambi&#233;n deber&#225;s de asegurarte de que los m&#243;dulos
+ <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> y <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>
+ han sido incorporados, o a&#241;adidos a la hora de compilar en tu binario httpd o
+ cargados mediante el archivo de configuraci&#243;n <code>httpd.conf</code>. Estos
+ dos m&#243;dulos proporcionan directivas b&#225;sicas y funcionalidades que son cr&#237;ticas
+ para la configuraci&#243;n y uso de autenticaci&#243;n y autorizaci&#243;n en el servidor web.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="gettingitworking" id="gettingitworking">Conseguir que funcione</a></h2>
+ <p>Aqu&#237; est&#225; lo b&#225;sico de c&#243;mo proteger con contrase&#241;a un directorio en tu
+ servidor.</p>
+
+ <p>Primero, necesitar&#225;s crear un fichero de contrase&#241;a. Dependiendo de que
+ proveedor de autenticaci&#243;n se haya elegido, se har&#225; de una forma u otra. Para empezar,
+ usaremos un fichero de contrase&#241;a de tipo texto.</p>
+
+ <p>Este fichero deber&#225; estar en un sitio que no se pueda tener acceso desde
+ la web. Esto tambi&#233;n implica que nadie pueda descargarse el fichero de
+ contrase&#241;as. Por ejemplo, si tus documentos est&#225;n guardados fuera de
+ <code>/usr/local/apache/htdocs</code>, querr&#225;s poner tu archivo de contrase&#241;as en
+ <code>/usr/local/apache/passwd</code>.</p>
+
+ <p>Para crear el fichero de contrase&#241;as, usa la utilidad
+ <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> que viene con Apache. Esta herramienta se
+ encuentra en el directorio <code>/bin</code> en donde sea que se ha
+ instalado el Apache. Si ha instalado Apache desde un paquete de terceros,
+ puede ser que se encuentre en su ruta de ejecuci&#243;n.</p>
+
+ <p>Para crear el fichero, escribiremos:</p>
+
+ <div class="example"><p><code>
+ htpasswd -c /usr/local/apache/passwd/passwords rbowen
+ </code></p></div>
+
+ <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> te preguntar&#225; por una contrase&#241;a, y despu&#233;s
+ te pedir&#225; que la vuelvas a escribir para confirmarla:</p>
+
+ <div class="example"><p><code>
+ $ htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
+ New password: mypassword<br />
+ Re-type new password: mypassword<br />
+ Adding password for user rbowen
+ </code></p></div>
+
+ <p>Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> no est&#225; en tu variable de entorno "path" del
+ sistema, por supuesto deber&#225;s escribir la ruta absoluta del ejecutable para
+ poder hacer que se ejecute. En una instalaci&#243;n por defecto, est&#225; en:
+ <code>/usr/local/apache2/bin/htpasswd</code></p>
+
+ <p>Lo pr&#243;ximo que necesitas, ser&#225; configurar el servidor para que pida una
+ contrase&#241;a y as&#237; decirle al servidor que usuarios est&#225;n autorizados a acceder.
+ Puedes hacer esto ya sea editando el fichero <code>httpd.conf</code>
+ de configuraci&#243;n o usando in fichero <code>.htaccess</code>. Por ejemplo,
+ si quieres proteger el directorio
+ <code>/usr/local/apache/htdocs/secret</code>, puedes usar las siguientes
+ directivas, ya sea en el fichero <code>.htaccess</code> localizado en
+ following directives, either placed in the file
+ <code>/usr/local/apache/htdocs/secret/.htaccess</code>, o
+ en la configuraci&#243;n global del servidor <code>httpd.conf</code> dentro de la
+ secci&#243;n &lt;Directory
+ "/usr/local/apache/htdocs/secret"&gt; , como se muestra a continuaci&#243;n:</p>
+
+ <pre class="prettyprint lang-config">&lt;Directory "/usr/local/apache/htdocs/secret"&gt;
+AuthType Basic
+AuthName "Restricted Files"
+# (Following line optional)
+AuthBasicProvider file
+AuthUserFile "/usr/local/apache/passwd/passwords"
+Require user rbowen
+&lt;/Directory&gt;</pre>
+
+
+ <p>Vamos a explicar cada una de las directivas individualmente.
+ La directiva <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> selecciona el m&#233;todo
+ que se usa para autenticar al usuario. El m&#233;todo m&#225;s com&#250;n es
+ <code>Basic</code>, y &#233;ste es el m&#233;todo que implementa
+ <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>. Es muy importante ser consciente,
+ de que la autenticaci&#243;n b&#225;sica, env&#237;a las contrase&#241;as desde el cliente
+ al servidor sin cifrar.
+ Este m&#233;todo por tanto, no debe ser utilizado para proteger datos muy sensibles,
+ a no ser que, este m&#233;todo de autenticaci&#243;n b&#225;sica, sea acompa&#241;ado del m&#243;dulo
+ <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>.
+ Apache soporta otro m&#233;todo m&#225;s de autenticaci&#243;n que es del tipo
+ <code>AuthType Digest</code>. Este m&#233;todo, es implementado por el m&#243;dulo <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> y con el se pretend&#237;a crear una autenticaci&#243;n m&#225;s
+ segura. Este ya no es el caso, ya que la conexi&#243;n deber&#225; realizarse con <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> en su lugar.
+ </p>
+
+ <p>La directiva <code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code>
+ establece el <dfn>Realm</dfn> para ser usado en la autenticaci&#243;n. El
+ <dfn>Realm</dfn> tiene dos funciones principales.
+ La primera, el cliente presenta a menudo esta informaci&#243;n al usuario como
+ parte del cuadro de di&#225;logo de contrase&#241;a. La segunda, que es utilizado por
+ el cliente para determinar qu&#233; contrase&#241;a enviar a para una determinada zona
+ de autenticaci&#243;n.</p>
+
+ <p>As&#237; que, por ejemple, una vez que el cliente se ha autenticado en el &#225;rea de
+ los <code>"Ficheros Restringidos"</code>, entonces re-intentar&#225; autom&#225;ticamente
+ la misma contrase&#241;a para cualquier &#225;rea en el mismo servidor que es marcado
+ con el Realm de <code>"Ficheros Restringidos"</code>
+ Por lo tanto, puedes prevenir que a un usuario se le pida mas de una vez por su
+ contrase&#241;a, compartiendo as&#237; varias &#225;reas restringidas el mismo Realm
+ Por supuesto, por razones de seguridad, el cliente pedir&#225; siempre por una contrase&#241;a,
+ siempre y cuando el nombre del servidor cambie.
+ </p>
+
+ <p>La directiva <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> es,
+ en este caso, opcional, ya que <code>file</code> es el valor por defecto
+ para esta directiva. Deber&#225;s usar esta directiva si estas usando otro medio
+ diferente para la autenticaci&#243;n, como por ejemplo
+ <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> o <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.</p>
+
+ <p>La directiva <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>
+ establece el path al fichero de contrase&#241;as que acabamos de crear con el
+ comando <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. Si tiene un n&#250;mero muy grande de usuarios,
+ puede ser realmente lento el buscar el usuario en ese fichero de texto plano
+ para autenticar a los usuarios en cada petici&#243;n.
+ Apache tambi&#233;n tiene la habilidad de almacenar informaci&#243;n de usuarios en
+ unos ficheros de r&#225;pido acceso a modo de base de datos.
+ El m&#243;dulo <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> proporciona la directiva <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>. Estos ficheros pueden ser creados y
+ manipulados con el programa <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> y <code class="program"><a href="../programs/htdbm.html">htdbm</a></code>.
+ Muchos otros m&#233;todos de autenticaci&#243;n as&#237; como otras opciones, est&#225;n disponibles en
+ m&#243;dulos de terceros
+ <a href="http://modules.apache.org/">Base de datos de M&#243;dulos disponibles</a>.</p>
+
+ <p>Finalmente, la directiva <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
+ proporciona la parte del proceso de autorizaci&#243;n estableciendo el o los
+ usuarios que se les est&#225; permitido acceder a una regi&#243;n del servidor.
+ En la pr&#243;xima secci&#243;n, discutiremos las diferentes v&#237;as de utilizar la
+ directiva <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Dejar que m&#225;s de una persona
+ entre</a></h2>
+ <p>Las directivas mencionadas arriba s&#243;lo permiten a una persona
+ (especialmente con un usuario que en ej ejemplo es <code>rbowen</code>)
+ en el directorio. En la mayor&#237;a de los casos, se querr&#225; permitir el acceso
+ a m&#225;s de una persona. Aqu&#237; es donde la directiva
+ <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code> entra en juego.</p>
+
+ <p>Si lo que se desea es permitir a m&#225;s de una persona el acceso, necesitar&#225;s
+ crear un archivo de grupo que asocie los nombres de grupos con el de personas
+ para permitirles el acceso. El formato de este fichero es bastante sencillo,
+ y puedes crearlo con tu editor de texto favorito. El contenido del fichero
+ se parecer&#225; a:</p>
+
+ <div class="example"><p><code>
+ GroupName: rbowen dpitts sungo rshersey
+ </code></p></div>
+
+ <p>B&#225;sicamente eso es la lista de miembros los cuales est&#225;n en un mismo fichero
+ de grupo en una sola linea separados por espacios.</p>
+
+ <p>Para a&#241;adir un usuario a tu fichero de contrase&#241;as existente teclee:</p>
+
+ <div class="example"><p><code>
+ htpasswd /usr/local/apache/passwd/passwords dpitts
+ </code></p></div>
+
+ <p>Te responder&#225; lo mismo que anteriormente, pero se a&#241;adir&#225; al fichero
+ existente en vez de crear uno nuevo. (Es decir el flag <code>-c</code> ser&#225;
+ el que haga que se genere un nuevo
+ fichero de contrase&#241;as).</p>
+
+ <p>Ahora, tendr&#225; que modificar su fichero <code>.htaccess</code> para que sea
+ parecido a lo siguiente:</p>
+
+ <pre class="prettyprint lang-config">AuthType Basic
+AuthName "By Invitation Only"
+# Optional line:
+AuthBasicProvider file
+AuthUserFile "/usr/local/apache/passwd/passwords"
+AuthGroupFile "/usr/local/apache/passwd/groups"
+Require group GroupName</pre>
+
+
+ <p>Ahora, cualquiera que est&#233; listado en el grupo <code>GroupName</code>,
+ y tiene una entrada en el fichero de <code>contrase&#241;as</code>, se les
+ permitir&#225; el acceso, si introducen su contrase&#241;a correctamente.</p>
+
+ <p>Hay otra manera de dejar entrar a varios usuarios, que es menos espec&#237;fica.
+ En lugar de crear un archivo de grupo, s&#243;lo puede utilizar la siguiente
+ directiva:</p>
+
+ <pre class="prettyprint lang-config">Require valid-user</pre>
+
+
+ <p>Usando &#233;sto en vez de la l&#237;nea <code>Require user rbowen</code>
+ permitir&#225; a cualquier persona acceder, la cu&#225;l aparece en el archivo de
+ contrase&#241;as, y que introduzca correctamente su contrase&#241;a. Incluso puede
+ emular el comportamiento del grupo aqu&#237;, s&#243;lo manteniendo un fichero de
+ contrase&#241;as independiente para cada grupo. La ventaja de este enfoque es
+ que Apache s&#243;lo tiene que comprobar un archivo, en lugar de dos. La desventaja
+ es que se tiene que mantener un mont&#243;n de ficheros de contrase&#241;a de grupo, y
+ recuerde hacer referencia al fichero correcto en la directiva
+ <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="possibleproblems" id="possibleproblems">Posibles Problemas</a></h2>
+ <p>Debido a la forma en que se especifica la autenticaci&#243;n b&#225;sica,
+ su nombre de usuario y la contrase&#241;a deben ser verificados cada vez
+ que se solicita un documento desde el servidor. Esto es, incluso si&nbsp;
+ se&nbsp; vuelve a cargar la misma p&#225;gina, y para cada imagen de la p&#225;gina (si
+&nbsp;&nbsp;&nbsp;&nbsp;provienen de un directorio protegido). Como se puede imaginar, esto
+&nbsp;&nbsp;&nbsp;&nbsp;ralentiza las cosas un poco. La cantidad que ralentiza las cosas es
+ proporcional al tama&#241;o del archivo de contrase&#241;as, porque tiene que
+ abrir ese archivo, recorrer&nbsp;lista de usuarios hasta que llega a su nombre.
+ Y tiene que hacer esto cada vez que se carga una p&#225;gina.</p>
+
+ <p>Una consecuencia de esto, es que hay un limite pr&#225;ctico de cuantos
+ usuarios puedes introducir en el fichero de contrase&#241;as. Este l&#237;mite
+ variar&#225; dependiendo de la m&#225;quina en la que tengas el servidor,
+ pero puedes notar ralentizaciones en cuanto se metan cientos de entradas,
+ y por lo tanto consideraremos entonces otro m&#233;todo de autenticaci&#243;n
+ en ese momento.
+ </p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="dbmdbd" id="dbmdbd">M&#233;todo alternativo de almacenamiento de las
+ contrase&#241;as</a></h2>
+
+ <p>Debido a que el almacenamiento de las contrase&#241;as en texto plano tiene
+ el problema mencionado anteriormente, puede que se prefiera guardar
+ las contrase&#241;as en otro lugar como por ejemplo una base de datos.
+ </p>
+
+ <p>Los m&#243;dulos <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> y <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code> son
+ dos m&#243;dulos que hacen esto posible. En vez de seleccionar la directiva de fichero
+ <code><code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> </code>, en su lugar
+ se puede elegir <code>dbm</code> o <code>dbd</code> como formato de almacenamiento.</p>
+
+ <p>Para seleccionar los ficheros de tipo dbm en vez de texto plano, podremos hacer algo parecido a lo siguiente:</p>
+
+ <pre class="prettyprint lang-config">&lt;Directory "/www/docs/private"&gt;
+ AuthName "Private"
+ AuthType Basic
+ AuthBasicProvider dbm
+ AuthDBMUserFile "/www/passwords/passwd.dbm"
+ Require valid-user
+&lt;/Directory&gt;</pre>
+
+
+ <p>Hay otras opciones disponibles. Consulta la documentaci&#243;n de
+ <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> para m&#225;s detalles.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="multprovider" id="multprovider">Uso de m&#250;ltiples proveedores</a></h2>
+
+ <p>Con la introducci&#243;n de la nueva autenticaci&#243;n basada en un proveedor y
+ una arquitectura de autorizaci&#243;n, ya no estaremos restringidos a un &#250;nico
+ m&#233;todo de autenticaci&#243;n o autorizaci&#243;n. De hecho, cualquier n&#250;mero de
+ los proveedores pueden ser mezclados y emparejados para ofrecerle
+ exactamente el esquema que se adapte a sus necesidades.
+ En el siguiente ejemplo, veremos como ambos proveedores tanto el fichero
+ como el LDAP son usados en la autenticaci&#243;n:
+ </p>
+
+ <pre class="prettyprint lang-config">&lt;Directory "/www/docs/private"&gt;
+ AuthName "Private"
+ AuthType Basic
+ AuthBasicProvider file ldap
+ AuthUserFile "/usr/local/apache/passwd/passwords"
+ AuthLDAPURL ldap://ldaphost/o=yourorg
+ Require valid-user
+&lt;/Directory&gt;</pre>
+
+
+ <p>En este ejemplo el fichero, que act&#250;a como proveedor, intentar&#225; autenticar
+ primero al usuario. Si no puede autenticar al usuario, el proveedor del LDAP
+ ser&#225; llamado para que realice la autenticaci&#243;n.
+ Esto permite al &#225;mbito de autenticaci&#243;n ser amplio, si su organizaci&#243;n
+ implementa m&#225;s de un tipo de almac&#233;n de autenticaci&#243;n.
+ Otros escenarios de autenticaci&#243;n y autorizaci&#243;n pueden incluir la
+ mezcla de un tipo de autenticaci&#243;n con un tipo diferente de autorizaci&#243;n.
+ Por ejemplo, autenticar contra un fichero de contrase&#241;as pero autorizando
+ dicho acceso mediante el directorio del LDAP.</p>
+
+ <p>As&#237; como m&#250;ltiples m&#233;todos y proveedores de autenticaci&#243;n pueden
+ ser implementados, tambi&#233;n pueden usarse m&#250;ltiples formas de
+ autorizaci&#243;n.
+ En este ejemplo ambos ficheros de autorizaci&#243;n de grupo as&#237; como
+ autorizaci&#243;n de grupo mediante LDAP va a ser usado:
+ </p>
+
+ <pre class="prettyprint lang-config">&lt;Directory "/www/docs/private"&gt;
+ AuthName "Private"
+ AuthType Basic
+ AuthBasicProvider file
+ AuthUserFile "/usr/local/apache/passwd/passwords"
+ AuthLDAPURL ldap://ldaphost/o=yourorg
+ AuthGroupFile "/usr/local/apache/passwd/groups"
+ Require group GroupName
+ Require ldap-group cn=mygroup,o=yourorg
+&lt;/Directory&gt;</pre>
+
+
+ <p>Para llevar la autorizaci&#243;n un poco m&#225;s lejos, las directivas
+ de autorizaci&#243;n de contenedores tales como
+ <code class="directive"><a href="../mod/mod_authz_core.html#requireall">&lt;RequireAll&gt;</a></code>
+ and
+ <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code>
+ nos permiten aplicar una l&#243;gica de en qu&#233; orden se manejar&#225; la autorizaci&#243;n dependiendo
+ de la configuraci&#243;n y controlada a trav&#233;s de ella.
+ Mire tambi&#233;n <a href="../mod/mod_authz_core.html#logic">Contenedores de
+ Autorizaci&#243;n</a> para ejemplos de c&#243;mo pueden ser aplicados.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="beyond" id="beyond">M&#225;s all&#225; de la Autorizaci&#243;n</a></h2>
+
+ <p>El modo en que la autorizaci&#243;n puede ser aplicada es ahora mucho m&#225;s flexible
+ que us solo chequeo contra un almac&#233;n de datos (contrase&#241;as). Ordenando la
+ l&#243;gica y escoger la forma en que la autorizaci&#243;n es realizada, ahora es posible
+ </p>
+
+ <h3><a name="authandororder" id="authandororder">Aplicando la l&#243;gica y ordenaci&#243;n</a></h3>
+ <p>Controlar el c&#243;mo y en qu&#233; orden se va a aplicar la autorizaci&#243;n ha
+ sido un misterio en el pasado. En Apache 2.2 un proveedor del
+ mecanismo de autenticaci&#243;n fue introducido para disociar el proceso actual
+ de autenticaci&#243;n y soportar funcionalidad.
+ Uno de los beneficios secundarios fue que los proveedores de autenticaci&#243;n
+ pod&#237;an ser configurados y llamados en un orden especifico que no dependieran
+ en el orden de carga del propio modulo.
+ Este proveedor de dicho mecanismo, ha sido introducido en la autorizaci&#243;n
+ tambi&#233;n. Lo que esto significa es que la directiva
+ <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
+ no s&#243;lo especifica que m&#233;todo de autorizaci&#243;n deber&#225; ser usado, si no
+ tambi&#233;n especifica el orden en que van a ser llamados. M&#250;ltiples
+ m&#233;todos de autorizaci&#243;n son llamados en el mismo orden en que la directiva
+ <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> aparece en la
+ configuraci&#243;n.
+ </p>
+
+ <p>
+ Con la Introducci&#243;n del contenedor de directivas de autorizaci&#243;n tales como
+ <code class="directive"><a href="../mod/mod_authz_core.html#requireall">&lt;RequireAll&gt;</a></code>
+ y
+ <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code>,
+ La configuraci&#243;n tambi&#233;n tiene control sobre cu&#225;ndo se llaman a los m&#233;todos
+ de autorizaci&#243;n y qu&#233; criterios determinan cu&#225;ndo se concede el acceso.
+ Vease
+ <a href="../mod/mod_authz_core.html#logic">Contenedores de autorizaci&#243;n</a>
+ Para un ejemplo de c&#243;mo pueden ser utilizados para expresar una l&#243;gica
+ m&#225;s compleja de autorizaci&#243;n.
+ </p>
+
+ <p>
+ Por defecto todas las directivas
+ <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
+ son manejadas como si estuvieran contenidas en una directiva
+ <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code>.
+ En otras palabras, Si alguno de los m&#233;todos de autorizaci&#243;n
+ especificados tiene &#233;xito, se concede la autorizaci&#243;n.
+ </p>
+
+
+
+ <h3><a name="reqaccessctrl" id="reqaccessctrl">Uso de los proveedores de autorizaci&#243;n para
+ el control de acceso</a></h3>
+
+ <p>
+ La autenticaci&#243;n de nombre de usuario y contrase&#241;a es s&#243;lo parte
+ de toda la historia que conlleva el proceso. Frecuentemente quiere
+ dar acceso a la gente en base a algo m&#225;s que lo que son.
+ Algo como de donde vienen.
+ </p>
+
+ <p>
+ Los proveedores de autorizaci&#243;n <code>all</code>,
+ <code>env</code>, <code>host</code> y <code>ip</code>
+ te permiten denegar o permitir el acceso bas&#225;ndose en otros
+ criterios como el nombre de la m&#225;quina o la IP de la m&#225;quina que
+ realiza la consulta para un documento.
+ </p>
+
+ <p>
+ El uso de estos proveedores se especifica a trav&#233;s de la directiva
+ <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>.
+ La directiva registra los proveedores de autorizaci&#243;n que ser&#225;n llamados
+ durante la solicitud de la fase del proceso de autorizaci&#243;n. Por ejemplo:
+ </p>
+
+ <pre class="prettyprint lang-config">Require ip <var>address</var>
+ </pre>
+
+
+ <p>
+ Donde <var>address</var> es una direcci&#243;n IP (o una direcci&#243;n IP parcial)
+ o bien:
+ </p>
+
+ <pre class="prettyprint lang-config">Require host <var>domain_name</var>
+ </pre>
+
+
+ <p>
+ Donde <var>domain_name</var> es el nombre completamente cualificado de un nombre
+ de dominio (FQDN) (o un nombre parcial del dominio);
+ puede proporcionar m&#250;ltiples direcciones o nombres de dominio, si se desea.
+ </p>
+
+ <p>
+ Por ejemplo, si alguien env&#237;a spam a su tabl&#243;n de mensajes y desea
+ mantenerlos alejados, podr&#237;a hacer lo siguiente:</p>
+
+ <pre class="prettyprint lang-config">&lt;RequireAll&gt;
+ Require all granted
+ Require not ip 10.252.46.165
+&lt;/RequireAll&gt;</pre>
+
+
+ <p>
+ Visitantes que vengan desde esa IP no ser&#225;n capaces de ver el contenido
+ que cubre esta directiva. Si, en cambio, lo que se tiene es el nombre de
+ la m&#225;quina, en vez de la direcci&#243;n IP, podr&#237;a usar:
+ </p>
+
+ <pre class="prettyprint lang-config">&lt;RequireAll&gt;
+ Require all granted
+ Require not host host.example.com
+&lt;/RequireAll&gt;</pre>
+
+
+ <p>
+ Y, si lo que se quiere es bloquear el acceso desde un determinado dominio
+ (bloquear el acceso desde el dominio entero), puede especificar parte
+ de la direcci&#243;n o del propio dominio a bloquear:
+ </p>
+
+ <pre class="prettyprint lang-config">&lt;RequireAll&gt;
+ Require all granted
+ Require not ip 192.168.205
+ Require not host phishers.example.com moreidiots.example
+ Require not host ke
+&lt;/RequireAll&gt;</pre>
+
+
+ <p>
+ Usando <code class="directive"><a href="../mod/mod_authz_core.html#requireall">&lt;RequireAll&gt;</a></code>
+ con m&#250;ltiples directivas <code class="directive"><a href="../mod/mod_authz_core.html#require">&lt;Require&gt;</a></code>, cada una negada con un <code>not</code>,
+ S&#243;lo permitir&#225; el acceso, si todas las condiciones negadas son verdaderas.
+ En otras palabras, el acceso ser&#225; bloqueado, si cualquiera de las condiciones
+ negadas fallara.
+ </p>
+
+
+
+ <h3><a name="filesystem" id="filesystem">Compatibilidad de Control de Acceso con versiones
+ anteriores </a></h3>
+
+ <p>
+ Uno de los efectos secundarios de adoptar proveedores basados en
+ mecanismos de autenticaci&#243;n es que las directivas anteriores
+ <code class="directive"><a href="../mod/mod_access_compat.html#order">Order</a></code>,
+ <code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code>,
+ <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> y
+ <code class="directive"><a href="../mod/mod_access_compat.html#satisfy">Satisfy</a></code> ya no son necesarias.
+ Sin embargo, para proporcionar compatibilidad con configuraciones antiguas,
+ estas directivas se han movido al m&#243;dulo <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.
+ </p>
+
+ <div class="warning"><h3>Nota:</h3>
+ <p>
+ Las directivas proporcionadas por <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>
+ han quedado obsoletas por <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>. Mezclar
+ directivas antiguas como
+ <code class="directive"><a href="../mod/mod_access_compat.html#order">Order</a></code>,
+ <code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code> &#243;
+ <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> con las nuevas
+ como
+ <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
+ es t&#233;cnicamente posible pero desaconsejable. El m&#243;dulo
+ <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code> se cre&#243; para soportar configuraciones
+ que contuvieran s&#243;lo directivas antiguas para facilitar la actualizaci&#243;n
+ a la versi&#243;n 2.4.
+ Por favor revise la documentaci&#243;n de
+ <a href="../upgrading.html">actualizaci&#243;n</a> para m&#225;s informaci&#243;n al
+ respecto.
+ </p>
+ </div>
+
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="socache" id="socache">Cache de Autenticaci&#243;n</a></h2>
+ <p>
+ Puede haber momentos en que la autenticaci&#243;n ponga una carga
+ inaceptable en el proveedor (de autenticaci&#243;n) o en tu red.
+ Esto suele afectar a los usuarios de <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>
+ (u otros proveedores de terceros/personalizados).
+ Para lidiar con este problema, HTTPD 2.3/2.4 introduce un nuevo proveedor
+ de cach&#233; <code class="module"><a href="../mod/mod_authn_socache.html">mod_authn_socache</a></code> para cachear las credenciales
+ y reducir la carga en el proveedor(es) original.
+ </p>
+ <p>
+ Esto puede ofrecer un aumento de rendimiento sustancial para algunos usuarios.
+ </p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="moreinformation" id="moreinformation">M&#225;s informaci&#243;n</a></h2>
+
+ <p>
+ Tambi&#233;n deber&#237;a leer la documentaci&#243;n para
+ <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> y <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>
+ la cu&#225;l contiene m&#225;s informaci&#243;n de como funciona todo esto.
+ La directiva <code class="directive"><a href="../mod/mod_authn_core.html#authnprovideralias">&lt;AuthnProviderAlias&gt;</a></code> puede tambi&#233;n ayudar
+ a la hora de simplificar ciertas configuraciones de autenticaci&#243;n.
+ </p>
+
+ <p>
+ Los diferentes algoritmos de cifrado que est&#225;n soportados por Apache
+ para la autenticaci&#243;n se explican en
+ <a href="../misc/password_encryptions.html">Cifrado de Contrase&#241;as</a>.
+ </p>
+
+ <p>
+ Y tal vez quiera ojear la documentaci&#243;n de "how to"
+ <a href="access.html">Control de Acceso</a> donde se mencionan temas
+ relacionados.</p>
+
+</div></div>
+<div class="bottomlang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/auth.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
+</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comentarios</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+var comments_shortname = 'httpd';
+var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/auth.html';
+(function(w, d) {
+ if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
+ d.write('<div id="comments_thread"><\/div>');
+ var s = d.createElement('script');
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+ (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+ }
+ else {
+ d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
+ }
+})(window, document);
+//--><!]]></script></div><div id="footer">
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los t&#233;rminos de <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
+if (typeof(prettyPrint) !== 'undefined') {
+ prettyPrint();
+}
+//--><!]]></script>
+</body></html> \ No newline at end of file
diff --git a/docs/manual/howto/auth.xml.es b/docs/manual/howto/auth.xml.es
new file mode 100644
index 0000000000..4d6e1c93ff
--- /dev/null
+++ b/docs/manual/howto/auth.xml.es
@@ -0,0 +1,682 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?>
+<!-- English Revision: 1738542 -->
+<!-- Translated by: Luis Gil de Bernabé Pfeiffer lgilbernabe [AT] apache.org-->
+<!-- Reviewed by: Sergio Ramos -->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="auth.xml.meta">
+<parentdocument href="./">How-To / Tutoriales</parentdocument>
+
+<title>Autenticación y Autorización</title>
+
+<summary>
+ <p>Autenticación es cualquier proceso por el cuál se verifica que uno es
+ quien dice ser. Autorización es cualquier proceso en el cuál cualquiera
+ está permitido a estar donde se quiera, o tener información la cuál se
+ quiera tener.
+ </p>
+
+ <p>Para información de control de acceso de forma genérica visite<a href="access.html">How to de Control de Acceso</a>.</p>
+</summary>
+
+<section id="related"><title>Módulos y Directivas Relacionados</title>
+
+<p>Hay tres tipos de módulos involucrados en los procesos de la autenticación
+ y autorización. Normalmente deberás escoger al menos un módulo de cada grupo.</p>
+
+<ul>
+ <li>Modos de Autenticación (consulte la directiva
+ <directive module="mod_authn_core">AuthType</directive> )
+ <ul>
+ <li><module>mod_auth_basic</module></li>
+ <li><module>mod_auth_digest</module></li>
+ </ul>
+ </li>
+ <li>Proveedor de Autenticación (consulte la directiva
+ <directive module="mod_auth_basic">AuthBasicProvider</directive> y
+ <directive module="mod_auth_digest">AuthDigestProvider</directive>)
+
+ <ul>
+ <li><module>mod_authn_anon</module></li>
+ <li><module>mod_authn_dbd</module></li>
+ <li><module>mod_authn_dbm</module></li>
+ <li><module>mod_authn_file</module></li>
+ <li><module>mod_authnz_ldap</module></li>
+ <li><module>mod_authn_socache</module></li>
+ </ul>
+ </li>
+ <li>Autorización (consulte la directiva
+ <directive module="mod_authz_core">Require</directive>)
+ <ul>
+ <li><module>mod_authnz_ldap</module></li>
+ <li><module>mod_authz_dbd</module></li>
+ <li><module>mod_authz_dbm</module></li>
+ <li><module>mod_authz_groupfile</module></li>
+ <li><module>mod_authz_host</module></li>
+ <li><module>mod_authz_owner</module></li>
+ <li><module>mod_authz_user</module></li>
+ </ul>
+ </li>
+</ul>
+
+ <p>A parte de éstos módulos, también están
+ <module>mod_authn_core</module> y
+ <module>mod_authz_core</module>. Éstos módulos implementan las directivas
+ esenciales que son el centro de todos los módulos de autenticación.</p>
+
+ <p>El módulo <module>mod_authnz_ldap</module> es tanto un proveedor de
+ autenticación como de autorización. El módulo
+ <module>mod_authz_host</module> proporciona autorización y control de acceso
+ basado en el nombre del Host, la dirección IP o características de la propia
+ petición, pero no es parte del sistema proveedor de
+ autenticación. Para tener compatibilidad inversa con el mod_access,
+ hay un nuevo modulo llamado <module>mod_access_compat</module>.</p>
+
+ <p>También puedes mirar el how-to de <a
+ href="access.html">Control de Acceso </a>, donde se plantean varias formas del control de acceso al servidor.</p>
+
+</section>
+
+<section id="introduction"><title>Introducción</title>
+ <p>Si se tiene información en nuestra página web que sea información
+ sensible o pensada para un grupo reducido de usuarios/personas,
+ las técnicas que se describen en este manual, le servirán
+ de ayuda para asegurarse de que las personas que ven esas páginas sean
+ las personas que uno quiere.</p>
+
+ <p>Este artículo cubre la parte "estándar" de cómo proteger partes de un
+ sitio web que muchos usarán.</p>
+
+ <note><title>Nota:</title>
+ <p>Si de verdad es necesario que tus datos estén en un sitio seguro,
+ considera usar <module>mod_ssl</module> como método de autenticación adicional a cualquier forma de autenticación.</p>
+ </note>
+</section>
+
+<section id="theprerequisites"><title>Los Prerequisitos</title>
+ <p>Las directivas que se usan en este artículo necesitaran ponerse ya sea
+ en el fichero de configuración principal del servidor ( típicamente en
+ la sección
+ <directive module="core" type="section">Directory</directive> de httpd.conf ), o
+ en cada uno de los ficheros de configuraciones del propio directorio
+ (los archivos <code>.htaccess</code>).</p>
+
+ <p>Si planea usar los ficheros <code>.htaccess</code> , necesitarás
+ tener en la configuración global del servidor, una configuración que permita
+ poner directivas de autenticación en estos ficheros. Esto se hace con la
+ directiva <directive module="core">AllowOverride</directive>, la cual especifica
+ que directivas, en su caso, pueden ser puestas en cada fichero de configuración
+ por directorio.</p>
+
+ <p>Ya que estamos hablando aquí de autenticación, necesitarás una directiva
+ <directive module="core">AllowOverride</directive> como la siguiente:
+ </p>
+
+ <highlight language="config">
+AllowOverride AuthConfig
+ </highlight>
+
+ <p>O, si solo se van a poner las directivas directamente en la configuración
+ principal del servidor, deberás tener, claro está, permisos de escritura
+ en el archivo. </p>
+
+ <p>Y necesitarás saber un poco de como está estructurado el árbol de
+ directorios de tu servidor, para poder saber donde se encuentran algunos
+ archivos. Esto no debería ser una tarea difícil, aún así intentaremos
+ dejarlo claro llegado el momento de comentar dicho aspecto.</p>
+
+ <p>También deberás de asegurarte de que los módulos
+ <module>mod_authn_core</module> y <module>mod_authz_core</module>
+ han sido incorporados, o añadidos a la hora de compilar en tu binario httpd o
+ cargados mediante el archivo de configuración <code>httpd.conf</code>. Estos
+ dos módulos proporcionan directivas básicas y funcionalidades que son críticas
+ para la configuración y uso de autenticación y autorización en el servidor web.</p>
+</section>
+
+<section id="gettingitworking"><title>Conseguir que funcione</title>
+ <p>Aquí está lo básico de cómo proteger con contraseña un directorio en tu
+ servidor.</p>
+
+ <p>Primero, necesitarás crear un fichero de contraseña. Dependiendo de que
+ proveedor de autenticación se haya elegido, se hará de una forma u otra. Para empezar,
+ usaremos un fichero de contraseña de tipo texto.</p>
+
+ <p>Este fichero deberá estar en un sitio que no se pueda tener acceso desde
+ la web. Esto también implica que nadie pueda descargarse el fichero de
+ contraseñas. Por ejemplo, si tus documentos están guardados fuera de
+ <code>/usr/local/apache/htdocs</code>, querrás poner tu archivo de contraseñas en
+ <code>/usr/local/apache/passwd</code>.</p>
+
+ <p>Para crear el fichero de contraseñas, usa la utilidad
+ <program>htpasswd</program> que viene con Apache. Esta herramienta se
+ encuentra en el directorio <code>/bin</code> en donde sea que se ha
+ instalado el Apache. Si ha instalado Apache desde un paquete de terceros,
+ puede ser que se encuentre en su ruta de ejecución.</p>
+
+ <p>Para crear el fichero, escribiremos:</p>
+
+ <example>
+ htpasswd -c /usr/local/apache/passwd/passwords rbowen
+ </example>
+
+ <p><program>htpasswd</program> te preguntará por una contraseña, y después
+ te pedirá que la vuelvas a escribir para confirmarla:</p>
+
+ <example>
+ $ htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
+ New password: mypassword<br />
+ Re-type new password: mypassword<br />
+ Adding password for user rbowen
+ </example>
+
+ <p>Si <program>htpasswd</program> no está en tu variable de entorno "path" del
+ sistema, por supuesto deberás escribir la ruta absoluta del ejecutable para
+ poder hacer que se ejecute. En una instalación por defecto, está en:
+ <code>/usr/local/apache2/bin/htpasswd</code></p>
+
+ <p>Lo próximo que necesitas, será configurar el servidor para que pida una
+ contraseña y así decirle al servidor que usuarios están autorizados a acceder.
+ Puedes hacer esto ya sea editando el fichero <code>httpd.conf</code>
+ de configuración o usando in fichero <code>.htaccess</code>. Por ejemplo,
+ si quieres proteger el directorio
+ <code>/usr/local/apache/htdocs/secret</code>, puedes usar las siguientes
+ directivas, ya sea en el fichero <code>.htaccess</code> localizado en
+ following directives, either placed in the file
+ <code>/usr/local/apache/htdocs/secret/.htaccess</code>, o
+ en la configuración global del servidor <code>httpd.conf</code> dentro de la
+ sección &lt;Directory
+ "/usr/local/apache/htdocs/secret"&gt; , como se muestra a continuación:</p>
+
+ <highlight language="config">
+&lt;Directory "/usr/local/apache/htdocs/secret"&gt;
+AuthType Basic
+AuthName "Restricted Files"
+# (Following line optional)
+AuthBasicProvider file
+AuthUserFile "/usr/local/apache/passwd/passwords"
+Require user rbowen
+&lt;/Directory&gt;
+ </highlight>
+
+ <p>Vamos a explicar cada una de las directivas individualmente.
+ La directiva <directive
+ module="mod_authn_core">AuthType</directive> selecciona el método
+ que se usa para autenticar al usuario. El método más común es
+ <code>Basic</code>, y éste es el método que implementa
+ <module>mod_auth_basic</module>. Es muy importante ser consciente,
+ de que la autenticación básica, envía las contraseñas desde el cliente
+ al servidor sin cifrar.
+ Este método por tanto, no debe ser utilizado para proteger datos muy sensibles,
+ a no ser que, este método de autenticación básica, sea acompañado del módulo
+ <module>mod_ssl</module>.
+ Apache soporta otro método más de autenticación que es del tipo
+ <code>AuthType Digest</code>. Este método, es implementado por el módulo <module
+ >mod_auth_digest</module> y con el se pretendía crear una autenticación más
+ segura. Este ya no es el caso, ya que la conexión deberá realizarse con <module
+ >mod_ssl</module> en su lugar.
+ </p>
+
+ <p>La directiva <directive module="mod_authn_core">AuthName</directive>
+ establece el <dfn>Realm</dfn> para ser usado en la autenticación. El
+ <dfn>Realm</dfn> tiene dos funciones principales.
+ La primera, el cliente presenta a menudo esta información al usuario como
+ parte del cuadro de diálogo de contraseña. La segunda, que es utilizado por
+ el cliente para determinar qué contraseña enviar a para una determinada zona
+ de autenticación.</p>
+
+ <p>Así que, por ejemple, una vez que el cliente se ha autenticado en el área de
+ los <code>"Ficheros Restringidos"</code>, entonces re-intentará automáticamente
+ la misma contraseña para cualquier área en el mismo servidor que es marcado
+ con el Realm de <code>"Ficheros Restringidos"</code>
+ Por lo tanto, puedes prevenir que a un usuario se le pida mas de una vez por su
+ contraseña, compartiendo así varias áreas restringidas el mismo Realm
+ Por supuesto, por razones de seguridad, el cliente pedirá siempre por una contraseña,
+ siempre y cuando el nombre del servidor cambie.
+ </p>
+
+ <p>La directiva <directive
+ module="mod_auth_basic">AuthBasicProvider</directive> es,
+ en este caso, opcional, ya que <code>file</code> es el valor por defecto
+ para esta directiva. Deberás usar esta directiva si estas usando otro medio
+ diferente para la autenticación, como por ejemplo
+ <module>mod_authn_dbm</module> o <module>mod_authn_dbd</module>.</p>
+
+ <p>La directiva <directive module="mod_authn_file">AuthUserFile</directive>
+ establece el path al fichero de contraseñas que acabamos de crear con el
+ comando <program>htpasswd</program>. Si tiene un número muy grande de usuarios,
+ puede ser realmente lento el buscar el usuario en ese fichero de texto plano
+ para autenticar a los usuarios en cada petición.
+ Apache también tiene la habilidad de almacenar información de usuarios en
+ unos ficheros de rápido acceso a modo de base de datos.
+ El módulo <module>mod_authn_dbm</module> proporciona la directiva <directive
+ module="mod_authn_dbm">AuthDBMUserFile</directive>. Estos ficheros pueden ser creados y
+ manipulados con el programa <program>dbmmanage</program> y <program>htdbm</program>.
+ Muchos otros métodos de autenticación así como otras opciones, están disponibles en
+ módulos de terceros
+ <a href="http://modules.apache.org/">Base de datos de Módulos disponibles</a>.</p>
+
+ <p>Finalmente, la directiva <directive module="mod_authz_core">Require</directive>
+ proporciona la parte del proceso de autorización estableciendo el o los
+ usuarios que se les está permitido acceder a una región del servidor.
+ En la próxima sección, discutiremos las diferentes vías de utilizar la
+ directiva <directive module="mod_authz_core">Require</directive>.</p>
+</section>
+
+<section id="lettingmorethanonepersonin"><title>Dejar que más de una persona
+ entre</title>
+ <p>Las directivas mencionadas arriba sólo permiten a una persona
+ (especialmente con un usuario que en ej ejemplo es <code>rbowen</code>)
+ en el directorio. En la mayoría de los casos, se querrá permitir el acceso
+ a más de una persona. Aquí es donde la directiva
+ <directive module="mod_authz_groupfile">AuthGroupFile</directive> entra en juego.</p>
+
+ <p>Si lo que se desea es permitir a más de una persona el acceso, necesitarás
+ crear un archivo de grupo que asocie los nombres de grupos con el de personas
+ para permitirles el acceso. El formato de este fichero es bastante sencillo,
+ y puedes crearlo con tu editor de texto favorito. El contenido del fichero
+ se parecerá a:</p>
+
+ <example>
+ GroupName: rbowen dpitts sungo rshersey
+ </example>
+
+ <p>Básicamente eso es la lista de miembros los cuales están en un mismo fichero
+ de grupo en una sola linea separados por espacios.</p>
+
+ <p>Para añadir un usuario a tu fichero de contraseñas existente teclee:</p>
+
+ <example>
+ htpasswd /usr/local/apache/passwd/passwords dpitts
+ </example>
+
+ <p>Te responderá lo mismo que anteriormente, pero se añadirá al fichero
+ existente en vez de crear uno nuevo. (Es decir el flag <code>-c</code> será
+ el que haga que se genere un nuevo
+ fichero de contraseñas).</p>
+
+ <p>Ahora, tendrá que modificar su fichero <code>.htaccess</code> para que sea
+ parecido a lo siguiente:</p>
+
+ <highlight language="config">
+AuthType Basic
+AuthName "By Invitation Only"
+# Optional line:
+AuthBasicProvider file
+AuthUserFile "/usr/local/apache/passwd/passwords"
+AuthGroupFile "/usr/local/apache/passwd/groups"
+Require group GroupName
+ </highlight>
+
+ <p>Ahora, cualquiera que esté listado en el grupo <code>GroupName</code>,
+ y tiene una entrada en el fichero de <code>contraseñas</code>, se les
+ permitirá el acceso, si introducen su contraseña correctamente.</p>
+
+ <p>Hay otra manera de dejar entrar a varios usuarios, que es menos específica.
+ En lugar de crear un archivo de grupo, sólo puede utilizar la siguiente
+ directiva:</p>
+
+ <highlight language="config">
+Require valid-user
+ </highlight>
+
+ <p>Usando ésto en vez de la línea <code>Require user rbowen</code>
+ permitirá a cualquier persona acceder, la cuál aparece en el archivo de
+ contraseñas, y que introduzca correctamente su contraseña. Incluso puede
+ emular el comportamiento del grupo aquí, sólo manteniendo un fichero de
+ contraseñas independiente para cada grupo. La ventaja de este enfoque es
+ que Apache sólo tiene que comprobar un archivo, en lugar de dos. La desventaja
+ es que se tiene que mantener un montón de ficheros de contraseña de grupo, y
+ recuerde hacer referencia al fichero correcto en la directiva
+ <directive module="mod_authn_file">AuthUserFile</directive>.</p>
+</section>
+
+<section id="possibleproblems"><title>Posibles Problemas</title>
+ <p>Debido a la forma en que se especifica la autenticación básica,
+ su nombre de usuario y la contraseña deben ser verificados cada vez
+ que se solicita un documento desde el servidor. Esto es, incluso si 
+ se  vuelve a cargar la misma página, y para cada imagen de la página (si
+    provienen de un directorio protegido). Como se puede imaginar, esto
+    ralentiza las cosas un poco. La cantidad que ralentiza las cosas es
+ proporcional al tamaño del archivo de contraseñas, porque tiene que
+ abrir ese archivo, recorrer lista de usuarios hasta que llega a su nombre.
+ Y tiene que hacer esto cada vez que se carga una página.</p>
+
+ <p>Una consecuencia de esto, es que hay un limite práctico de cuantos
+ usuarios puedes introducir en el fichero de contraseñas. Este límite
+ variará dependiendo de la máquina en la que tengas el servidor,
+ pero puedes notar ralentizaciones en cuanto se metan cientos de entradas,
+ y por lo tanto consideraremos entonces otro método de autenticación
+ en ese momento.
+ </p>
+</section>
+
+<section id="dbmdbd"><title>Método alternativo de almacenamiento de las
+ contraseñas</title>
+
+ <p>Debido a que el almacenamiento de las contraseñas en texto plano tiene
+ el problema mencionado anteriormente, puede que se prefiera guardar
+ las contraseñas en otro lugar como por ejemplo una base de datos.
+ </p>
+
+ <p>Los módulos <module>mod_authn_dbm</module> y <module>mod_authn_dbd</module> son
+ dos módulos que hacen esto posible. En vez de seleccionar la directiva de fichero
+ <code><directive module="mod_auth_basic">AuthBasicProvider</directive> </code>, en su lugar
+ se puede elegir <code>dbm</code> o <code>dbd</code> como formato de almacenamiento.</p>
+
+ <p>Para seleccionar los ficheros de tipo dbm en vez de texto plano, podremos hacer algo parecido a lo siguiente:</p>
+
+ <highlight language="config">
+&lt;Directory "/www/docs/private"&gt;
+ AuthName "Private"
+ AuthType Basic
+ AuthBasicProvider dbm
+ AuthDBMUserFile "/www/passwords/passwd.dbm"
+ Require valid-user
+&lt;/Directory&gt;
+ </highlight>
+
+ <p>Hay otras opciones disponibles. Consulta la documentación de
+ <module>mod_authn_dbm</module> para más detalles.</p>
+</section>
+
+<section id="multprovider"><title>Uso de múltiples proveedores</title>
+
+ <p>Con la introducción de la nueva autenticación basada en un proveedor y
+ una arquitectura de autorización, ya no estaremos restringidos a un único
+ método de autenticación o autorización. De hecho, cualquier número de
+ los proveedores pueden ser mezclados y emparejados para ofrecerle
+ exactamente el esquema que se adapte a sus necesidades.
+ En el siguiente ejemplo, veremos como ambos proveedores tanto el fichero
+ como el LDAP son usados en la autenticación:
+ </p>
+
+ <highlight language="config">
+&lt;Directory "/www/docs/private"&gt;
+ AuthName "Private"
+ AuthType Basic
+ AuthBasicProvider file ldap
+ AuthUserFile "/usr/local/apache/passwd/passwords"
+ AuthLDAPURL ldap://ldaphost/o=yourorg
+ Require valid-user
+&lt;/Directory&gt;
+ </highlight>
+
+ <p>En este ejemplo el fichero, que actúa como proveedor, intentará autenticar
+ primero al usuario. Si no puede autenticar al usuario, el proveedor del LDAP
+ será llamado para que realice la autenticación.
+ Esto permite al ámbito de autenticación ser amplio, si su organización
+ implementa más de un tipo de almacén de autenticación.
+ Otros escenarios de autenticación y autorización pueden incluir la
+ mezcla de un tipo de autenticación con un tipo diferente de autorización.
+ Por ejemplo, autenticar contra un fichero de contraseñas pero autorizando
+ dicho acceso mediante el directorio del LDAP.</p>
+
+ <p>Así como múltiples métodos y proveedores de autenticación pueden
+ ser implementados, también pueden usarse múltiples formas de
+ autorización.
+ En este ejemplo ambos ficheros de autorización de grupo así como
+ autorización de grupo mediante LDAP va a ser usado:
+ </p>
+
+ <highlight language="config">
+&lt;Directory "/www/docs/private"&gt;
+ AuthName "Private"
+ AuthType Basic
+ AuthBasicProvider file
+ AuthUserFile "/usr/local/apache/passwd/passwords"
+ AuthLDAPURL ldap://ldaphost/o=yourorg
+ AuthGroupFile "/usr/local/apache/passwd/groups"
+ Require group GroupName
+ Require ldap-group cn=mygroup,o=yourorg
+&lt;/Directory&gt;
+ </highlight>
+
+ <p>Para llevar la autorización un poco más lejos, las directivas
+ de autorización de contenedores tales como
+ <directive module="mod_authz_core" type="section">RequireAll</directive>
+ and
+ <directive module="mod_authz_core" type="section">RequireAny</directive>
+ nos permiten aplicar una lógica de en qué orden se manejará la autorización dependiendo
+ de la configuración y controlada a través de ella.
+ Mire también <a href="../mod/mod_authz_core.html#logic">Contenedores de
+ Autorización</a> para ejemplos de cómo pueden ser aplicados.</p>
+
+</section>
+
+<section id="beyond"><title>Más allá de la Autorización</title>
+
+ <p>El modo en que la autorización puede ser aplicada es ahora mucho más flexible
+ que us solo chequeo contra un almacén de datos (contraseñas). Ordenando la
+ lógica y escoger la forma en que la autorización es realizada, ahora es posible
+ </p>
+
+ <section id="authandororder"><title>Aplicando la lógica y ordenación</title>
+ <p>Controlar el cómo y en qué orden se va a aplicar la autorización ha
+ sido un misterio en el pasado. En Apache 2.2 un proveedor del
+ mecanismo de autenticación fue introducido para disociar el proceso actual
+ de autenticación y soportar funcionalidad.
+ Uno de los beneficios secundarios fue que los proveedores de autenticación
+ podían ser configurados y llamados en un orden especifico que no dependieran
+ en el orden de carga del propio modulo.
+ Este proveedor de dicho mecanismo, ha sido introducido en la autorización
+ también. Lo que esto significa es que la directiva
+ <directive module="mod_authz_core">Require</directive>
+ no sólo especifica que método de autorización deberá ser usado, si no
+ también especifica el orden en que van a ser llamados. Múltiples
+ métodos de autorización son llamados en el mismo orden en que la directiva
+ <directive module="mod_authz_core">Require</directive> aparece en la
+ configuración.
+ </p>
+
+ <p>
+ Con la Introducción del contenedor de directivas de autorización tales como
+ <directive module="mod_authz_core" type="section">RequireAll</directive>
+ y
+ <directive module="mod_authz_core" type="section">RequireAny</directive>,
+ La configuración también tiene control sobre cuándo se llaman a los métodos
+ de autorización y qué criterios determinan cuándo se concede el acceso.
+ Vease
+ <a href="../mod/mod_authz_core.html#logic">Contenedores de autorización</a>
+ Para un ejemplo de cómo pueden ser utilizados para expresar una lógica
+ más compleja de autorización.
+ </p>
+
+ <p>
+ Por defecto todas las directivas
+ <directive module="mod_authz_core">Require</directive>
+ son manejadas como si estuvieran contenidas en una directiva
+ <directive module="mod_authz_core" type="section">RequireAny</directive>.
+ En otras palabras, Si alguno de los métodos de autorización
+ especificados tiene éxito, se concede la autorización.
+ </p>
+
+ </section>
+
+ <section id="reqaccessctrl"><title>Uso de los proveedores de autorización para
+ el control de acceso</title>
+
+ <p>
+ La autenticación de nombre de usuario y contraseña es sólo parte
+ de toda la historia que conlleva el proceso. Frecuentemente quiere
+ dar acceso a la gente en base a algo más que lo que son.
+ Algo como de donde vienen.
+ </p>
+
+ <p>
+ Los proveedores de autorización <code>all</code>,
+ <code>env</code>, <code>host</code> y <code>ip</code>
+ te permiten denegar o permitir el acceso basándose en otros
+ criterios como el nombre de la máquina o la IP de la máquina que
+ realiza la consulta para un documento.
+ </p>
+
+ <p>
+ El uso de estos proveedores se especifica a través de la directiva
+ <directive module="mod_authz_core">Require</directive>.
+ La directiva registra los proveedores de autorización que serán llamados
+ durante la solicitud de la fase del proceso de autorización. Por ejemplo:
+ </p>
+
+ <highlight language="config">
+Require ip <var>address</var>
+ </highlight>
+
+ <p>
+ Donde <var>address</var> es una dirección IP (o una dirección IP parcial)
+ o bien:
+ </p>
+
+ <highlight language="config">
+Require host <var>domain_name</var>
+ </highlight>
+
+ <p>
+ Donde <var>domain_name</var> es el nombre completamente cualificado de un nombre
+ de dominio (FQDN) (o un nombre parcial del dominio);
+ puede proporcionar múltiples direcciones o nombres de dominio, si se desea.
+ </p>
+
+ <p>
+ Por ejemplo, si alguien envía spam a su tablón de mensajes y desea
+ mantenerlos alejados, podría hacer lo siguiente:</p>
+
+ <highlight language="config">
+&lt;RequireAll&gt;
+ Require all granted
+ Require not ip 10.252.46.165
+&lt;/RequireAll&gt;
+ </highlight>
+
+ <p>
+ Visitantes que vengan desde esa IP no serán capaces de ver el contenido
+ que cubre esta directiva. Si, en cambio, lo que se tiene es el nombre de
+ la máquina, en vez de la dirección IP, podría usar:
+ </p>
+
+ <highlight language="config">
+&lt;RequireAll&gt;
+ Require all granted
+ Require not host host.example.com
+&lt;/RequireAll&gt;
+ </highlight>
+
+ <p>
+ Y, si lo que se quiere es bloquear el acceso desde un determinado dominio
+ (bloquear el acceso desde el dominio entero), puede especificar parte
+ de la dirección o del propio dominio a bloquear:
+ </p>
+
+ <highlight language="config">
+&lt;RequireAll&gt;
+ Require all granted
+ Require not ip 192.168.205
+ Require not host phishers.example.com moreidiots.example
+ Require not host ke
+&lt;/RequireAll&gt;
+ </highlight>
+
+ <p>
+ Usando <directive module="mod_authz_core" type="section">RequireAll</directive>
+ con múltiples directivas <directive module="mod_authz_core"
+ type="section">Require</directive>, cada una negada con un <code>not</code>,
+ Sólo permitirá el acceso, si todas las condiciones negadas son verdaderas.
+ En otras palabras, el acceso será bloqueado, si cualquiera de las condiciones
+ negadas fallara.
+ </p>
+
+ </section>
+
+ <section id="filesystem"><title>Compatibilidad de Control de Acceso con versiones
+ anteriores </title>
+
+ <p>
+ Uno de los efectos secundarios de adoptar proveedores basados en
+ mecanismos de autenticación es que las directivas anteriores
+ <directive module="mod_access_compat">Order</directive>,
+ <directive module="mod_access_compat">Allow</directive>,
+ <directive module="mod_access_compat">Deny</directive> y
+ <directive module="mod_access_compat">Satisfy</directive> ya no son necesarias.
+ Sin embargo, para proporcionar compatibilidad con configuraciones antiguas,
+ estas directivas se han movido al módulo <module>mod_access_compat</module>.
+ </p>
+
+ <note type="warning"><title>Nota:</title>
+ <p>
+ Las directivas proporcionadas por <module>mod_access_compat</module>
+ han quedado obsoletas por <module>mod_authz_host</module>. Mezclar
+ directivas antiguas como
+ <directive module="mod_access_compat">Order</directive>,
+ <directive module="mod_access_compat">Allow</directive> ó
+ <directive module="mod_access_compat">Deny</directive> con las nuevas
+ como
+ <directive module="mod_authz_core">Require</directive>
+ es técnicamente posible pero desaconsejable. El módulo
+ <module>mod_access_compat</module> se creó para soportar configuraciones
+ que contuvieran sólo directivas antiguas para facilitar la actualización
+ a la versión 2.4.
+ Por favor revise la documentación de
+ <a href="../upgrading.html">actualización</a> para más información al
+ respecto.
+ </p>
+ </note>
+ </section>
+
+ </section>
+
+<section id="socache"><title>Cache de Autenticación</title>
+ <p>
+ Puede haber momentos en que la autenticación ponga una carga
+ inaceptable en el proveedor (de autenticación) o en tu red.
+ Esto suele afectar a los usuarios de <module>mod_authn_dbd</module>
+ (u otros proveedores de terceros/personalizados).
+ Para lidiar con este problema, HTTPD 2.3/2.4 introduce un nuevo proveedor
+ de caché <module>mod_authn_socache</module> para cachear las credenciales
+ y reducir la carga en el proveedor(es) original.
+ </p>
+ <p>
+ Esto puede ofrecer un aumento de rendimiento sustancial para algunos usuarios.
+ </p>
+</section>
+
+<section id="moreinformation"><title>Más información</title>
+
+ <p>
+ También debería leer la documentación para
+ <module>mod_auth_basic</module> y <module>mod_authz_host</module>
+ la cuál contiene más información de como funciona todo esto.
+ La directiva <directive type="section"
+ module="mod_authn_core">AuthnProviderAlias</directive> puede también ayudar
+ a la hora de simplificar ciertas configuraciones de autenticación.
+ </p>
+
+ <p>
+ Los diferentes algoritmos de cifrado que están soportados por Apache
+ para la autenticación se explican en
+ <a href="../misc/password_encryptions.html">Cifrado de Contraseñas</a>.
+ </p>
+
+ <p>
+ Y tal vez quiera ojear la documentación de "how to"
+ <a href="access.html">Control de Acceso</a> donde se mencionan temas
+ relacionados.</p>
+
+</section>
+
+</manualpage>
diff --git a/docs/manual/howto/auth.xml.meta b/docs/manual/howto/auth.xml.meta
index 250ddc5cad..1ec45a49e7 100644
--- a/docs/manual/howto/auth.xml.meta
+++ b/docs/manual/howto/auth.xml.meta
@@ -8,6 +8,7 @@
<variants>
<variant>en</variant>
+ <variant>es</variant>
<variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
diff --git a/docs/manual/howto/cgi.html b/docs/manual/howto/cgi.html
index 5a965e3380..4f069faacf 100644
--- a/docs/manual/howto/cgi.html
+++ b/docs/manual/howto/cgi.html
@@ -4,6 +4,10 @@ URI: cgi.html.en
Content-Language: en
Content-type: text/html; charset=ISO-8859-1
+URI: cgi.html.es
+Content-Language: es
+Content-type: text/html; charset=ISO-8859-1
+
URI: cgi.html.fr
Content-Language: fr
Content-type: text/html; charset=ISO-8859-1
diff --git a/docs/manual/howto/cgi.html.es b/docs/manual/howto/cgi.html.es
new file mode 100644
index 0000000000..5ead2d908c
--- /dev/null
+++ b/docs/manual/howto/cgi.html.es
@@ -0,0 +1,615 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
+<!--
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ This file is generated from xml source: DO NOT EDIT
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ -->
+<title>Tutorial de Apache: Contenido Din&#225;mico con CGI - Servidor Apache HTTP Versi&#243;n 2.4</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
+<script src="../style/scripts/prettify.min.js" type="text/javascript">
+</script>
+
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p>
+<p class="apache">Versi&#243;n 2.4 del Servidor HTTP Apache</p>
+<img alt="" src="../images/feather.png" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentaci&#243;n</a> &gt; <a href="../">Versi&#243;n 2.4</a> &gt; <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Tutorial de Apache: Contenido Din&#225;mico con CGI</h1>
+<div class="toplang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/cgi.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/cgi.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/cgi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
+</div>
+</div>
+<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#intro">Introducci&#243;n</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configurando Apache para permitir CGI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#writing">Escribiendo un programa CGI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">&#161;Pero todav&#237;a no funciona!</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#behindscenes">&#191;Qu&#233; ocurre entre bastidores?</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#libraries">M&#243;dulos/librer&#237;as CGI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#moreinfo">Para m&#225;s informaci&#243;n</a></li>
+</ul><h3>Consulte tambi&#233;n</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="intro" id="intro">Introducci&#243;n</a></h2>
+
+ <table class="related"><tr><th>M&#243;dulos Relacionados</th><th>Directivas Relacionadas</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code></li></ul></td></tr></table>
+
+ <p>CGI (Common Gateway Interface) es un m&#233;todo por el cual
+ un servidor web puede interactuar con programas externos de
+ generaci&#243;n de contenido, a ellos nos referimos com&#250;nmente como
+ programas CGI o scripts CGI. Es el m&#233;todo m&#225;s com&#250;n y sencillo de
+ mostrar contenido din&#225;mico en su sitio web. Este documento es una
+ introducci&#243;n para configurar CGI en su servidor web Apache, y de
+ iniciaci&#243;n para escribir programas CGI.</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="configuring" id="configuring">Configurando Apache para permitir CGI</a></h2>
+
+
+ <p>Para conseguir que sus programas CGI funcionen correctamente,
+ deber&#225; configurar Apache para que permita la ejecuci&#243;n de CGI. Hay
+ distintas formas de hacerlo.</p>
+
+ <div class="warning">Nota: Si Apache ha sido compilado con soporte
+ de m&#243;dulos compartidos, necesitar&#225; que el m&#243;dulo de CGI est&#233; cargado;
+ en su <code>httpd.conf</code> tiene que asegurarse de que la directiva
+ <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>
+ no ha sido comentada. Una directiva configurada correctamente ser&#237;a as&#237;:
+
+ <pre class="prettyprint lang-config">LoadModule cgid_module modules/mod_cgid.so</pre>
+
+
+ En Windows, o si usa un mpm que no es multihilo, como prefork, una
+ directiva configurada correctamente podr&#237;a definirse as&#237;:
+
+ <pre class="prettyprint lang-config">LoadModule cgi_module modules/mod_cgi.so</pre>
+</div>
+
+ <h3><a name="scriptalias" id="scriptalias">ScriptAlias</a></h3>
+
+
+ <p>La directiva
+ <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
+ indica a Apache que un directorio se ha configurado espec&#237;ficamente
+ para programas CGI. Apache asumir&#225; que cada fichero en este
+ directorio es un programa CGI, e intentar&#225; ejecutarlos cuando un
+ cliente solicita este recurso.</p>
+
+ <p>La directiva
+ <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> se puede
+ definir as&#237;:</p>
+
+ <pre class="prettyprint lang-config">ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"</pre>
+
+
+ <p>El ejemplo que se muestra es de un archivo de configuraci&#243;n
+ <code>httpd.conf</code> por defecto si usted instal&#243; Apache
+ en la ubicaci&#243;n por defecto. La directiva
+ <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> es muy
+ parecida a la directiva <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>,
+ &#233;sta define un prefijo de URL que se enlaza a un directorio
+ en particular. <code class="directive">Alias</code> y
+ <code class="directive">ScriptAlias</code> se usan generalmente para
+ directorios que se encuentran fuera del directorio
+ <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. La diferencia
+ entre <code class="directive">Alias</code> y <code class="directive">ScriptAlias</code>
+ es que en <code class="directive">ScriptAlias</code> cualquier elemento
+ debajo de ese prefijo de URL ser&#225; considerado un programa CGI. As&#237;,
+ el ejemplo de m&#225;s arriba le indica a Apache que
+ cualquier solicitud para un recurso que comience con
+ <code>/cgi-bin/</code> deber&#237;a servirse desde el directorio
+ <code>/usr/local/apache2/cgi-bin/</code>, y deber&#237;a tratarse como un
+ programa CGI.</p>
+
+ <p>Por ejemplo, si se solicita la URL
+ <code>http://www.example.com/cgi-bin/test.pl</code>,
+ Apache intentar&#225; ejecutar el archivo
+ <code>/usr/local/apache2/cgi-bin/test.pl</code> y dar
+ el resultado. Por supuesto el archivo debe existir y ser ejecutable,
+ y dar el resultado de una manera espec&#237;fica o Apache devolver&#225;
+ un mensaje de error.</p>
+
+
+ <h3><a name="nonscriptalias" id="nonscriptalias">CGI fuera de directorios ScriptAlias</a></h3>
+
+
+ <p>Los programas CGI habitualmente se restringen a los directorios de
+ <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> por razones de
+ seguridad. De esta manera, los administradores pueden controlar de una
+ manera m&#225;s segura quien puede ejecutar programas CGI. Aun as&#237;, si no
+ se toman suficientes precauciones, no hay ninguna raz&#243;n por la que
+ programas CGI no se puedan ejecutar desde directorios seleccionados de
+ manera arbitraria. Por ejemplo, quiz&#225;s quiera permitir que usuarios del
+ sistema tengan contenido web en sus directorios home con la directiva
+ <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>. Si quieren
+ tener sus propios programas CGI, pero no tienen acceso al directorio
+ principal <code>cgi-bin</code>, necesitar&#225;n ser capaces de
+ ejecutar sus scripts CGI en alg&#250;n otro sitio.</p>
+
+ <p>Hay dos pasos a seguir para permitir la ejecuci&#243;n CGI en directorios
+ seleccionados de manera arbitraria. Primero, el handler
+ <code>cgi-script</code> debe estar activado usando la directiva
+ <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> o la directiva
+ <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code>. Segundo, el par&#225;metro
+ <code>ExecCGI</code> debe estar definido en la directiva
+ <code class="directive"><a href="../mod/core.html#options">Options</a></code>.</p>
+
+
+ <h3><a name="options" id="options">Usando Options de manera expl&#237;cita para permitir ejecuci&#243;n de
+ CGI</a></h3>
+
+
+ <p>Puede usar la directiva
+ <code class="directive"><a href="../mod/core.html#options">Options</a></code>, en el archivo de
+ configuraci&#243;n principal para especificar que se permite la ejecuci&#243;n
+ de CGI en un directorio en particular:</p>
+
+ <pre class="prettyprint lang-config">&lt;Directory "/usr/local/apache2/htdocs/somedir"&gt;
+ Options +ExecCGI
+&lt;/Directory&gt;</pre>
+
+
+ <p>Esta directiva de aqu&#237; arriba le indica a Apache que debe
+ permitir la ejecuci&#243;n de archivos CGI. Tambi&#233;n necesitar&#225; indicarle
+ al servidor que los archivos son archivos CGI. La directiva
+ <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> le indica al
+ servidor que debe tratar a todos los archivos con la extensi&#243;n
+ <code>cgi</code> o <code>pl</code> como programas CGI:</p>
+
+ <pre class="prettyprint lang-config">AddHandler cgi-script .cgi .pl</pre>
+
+
+
+ <h3><a name="htaccess" id="htaccess">Ficheros .htaccess</a></h3>
+
+
+ <p>El <a href="htaccess.html">tutorial <code>.htaccess</code></a>
+ ense&#241;a como activar programas CGI si no tienes acceso a
+ <code>httpd.conf</code>.</p>
+
+
+ <h3><a name="userdir" id="userdir">Directorios de Usuario</a></h3>
+
+
+ <p>Para permitir la ejecuci&#243;n de programas CGI para cualquier
+ archivo que acabe en <code>.cgi</code> en directorios de usuario,
+ puedes usar la siguiente configuraci&#243;n:</p>
+
+ <pre class="prettyprint lang-config">&lt;Directory "/home/*/public_html"&gt;
+ Options +ExecCGI
+ AddHandler cgi-script .cgi
+&lt;/Directory&gt;</pre>
+
+
+ <p>Si quiere designar un subdirectorio <code>cgi-bin</code> dentro
+ de un directorio de usuario en el que todos los ficheros ser&#225;n
+ tratados como un programa CGI, puede usar lo siguiente:</p>
+
+ <pre class="prettyprint lang-config">&lt;Directory "/home/*/public_html/cgi-bin"&gt;
+ Options ExecCGI
+ SetHandler cgi-script
+&lt;/Directory&gt;</pre>
+
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="writing" id="writing">Escribiendo un programa CGI</a></h2>
+
+
+ <p>Hay dos diferencias principales entre programaci&#243;n ``regular'' y
+ programaci&#243;n en CGI.</p>
+
+ <p>Primera, el resultado al completo de tu programa CGI debe estar
+ precedido de una cabecera <a class="glossarylink" href="../glossary.html#mime-type" title="ver glosario">MIME-type</a>. Esta
+ cabecera HTTP le indica al cliente que tipo de contenido est&#225;
+ recibiendo. La mayor parte de las veces, &#233;sto ser&#225; algo como:</p>
+
+ <div class="example"><p><code>
+ Content-type: text/html
+ </code></p></div>
+
+ <p>Segunda, el resultado debe estar en formato HTML, o cualquier
+ otro formato que su navegador sea capaz de mostrar. La mayor
+ parte de las veces, ser&#225; HTML, pero otras escribir&#225; un programa
+ CGI que devuelve una imagen gif, u otro contenido no-HTML.</p>
+
+ <p>Aparte de estas dos cosas, escribir un programa en CGI se
+ parecer&#225; bastante a cualquier otro programa que vaya a escribir.
+ </p>
+
+
+ <h3><a name="firstcgi" id="firstcgi">Su primer programa CGI</a></h3>
+
+
+ <p>A continuaci&#243;n podr&#225; ver un ejemplo de programa CGI que muestra
+ una l&#237;nea de texto en su navegador. Escriba lo siguiente,
+ gu&#225;rdelo en un archivo con el nombre <code>first.pl</code>, y
+ p&#243;ngalo en su directorio <code>cgi-bin</code>.</p>
+
+ <pre class="prettyprint lang-perl">#!/usr/bin/perl
+print "Content-type: text/html\n\n";
+print "Hola, Mundo.";</pre>
+
+
+ <p>Incluso si Perl no le resulta familiar, podr&#225; ver lo que est&#225;
+ ocurriendo aqu&#237;. La primera l&#237;nea le dice a Apache (o a
+ cualquier shell en la que se est&#233; ejecutando) que este programa
+ puede ejecutarse con el int&#233;rprete en la ubicaci&#243;n
+ <code>/usr/bin/perl</code>. La segunda l&#237;nea imprime la
+ declaraci&#243;n de Content-Type que mencionamos antes, seguida de
+ dos pares de retornos de carro. Esto pone una l&#237;nea en blanco
+ despu&#233;s de la cabecera para indicar el final de las cabeceras
+ HTTP, y el comienzo del cuerpo del contenido. La tercera
+ imprime la cadena de caracteres "Hola, Mundo.". Y ese es el
+ final del programa.</p>
+
+ <p>Si lo abre con su navegador favorito y le dice que solicite la
+ direcci&#243;n</p>
+
+ <div class="example"><p><code>
+ http://www.example.com/cgi-bin/first.pl
+ </code></p></div>
+
+ <p>o donde quiera que pusiera el archivo, ver&#225; una l&#237;nea
+ <code>Hola, Mundo.</code> aparecer&#225;n la ventana del navegador. No es
+ muy emocionante, pero una vez que consiga que funcione podr&#225; hacer
+ lo mismo con casi cualquier programa.</p>
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="troubleshoot" id="troubleshoot">&#161;Pero todav&#237;a no funciona!</a></h2>
+
+
+ <p>Hay 4 cosas b&#225;sicas que puede llegar a ver en su navegador cuando
+ intenta acceder a un programa CGI desde la web:</p>
+
+ <dl>
+ <dt>El resultado del programa CGI</dt>
+ <dd>&#161;Genial! Esto indica que todo funcion&#243; correctamente. Si el
+ resultado es correcto, pero el navegador no lo procesa
+ correctamente, aseg&#250;rese de que tiene especificado
+ correctamente el <code>Content-Type</code> en su programa
+ CGI.</dd>
+
+ <dt>El c&#243;digo fuente de su programa CGI o un mensaje del tipo
+ "POST Method Not Allowed".</dt>
+
+ <dd>Eso significa que no ha configurado Apache de manera
+ apropiada para interpretar su programa CGI. Relea la secci&#243;n
+ de <a href="#configuring">Configurando Apache</a> e intente
+ encontrar qu&#233; le falta.</dd>
+
+ <dt>Un mensaje que empieza con "Forbidden"</dt>
+ <dd>Eso significa que hay un problema de permisos. Compruebe el
+ <a href="#errorlogs">Log de Errores de Apache</a> y la
+ secci&#243;n de m&#225;s abajo de <a href="#permissions">Permisos de
+ Fichero</a>.</dd>
+
+ <dt>Un mensaje indicando "Internal Server Error"</dt>
+ <dd>Si comprueba el <a href="#errorlogs">Log de errores de
+ Apache</a>, probablemente encontrar&#225; que indica "Premature
+ end of script headers", posiblemente acompa&#241;ado de otro
+ mensaje de error generado por su programa CGI. En este caso,
+ querr&#225; comprobar cada una de las secciones de m&#225;s adelante
+ para ver qu&#233; impide que su programa CGI genere las cabeceras
+ HTTP adecuadas.</dd>
+ </dl>
+
+ <h3><a name="permissions" id="permissions">Permisos de Fichero</a></h3>
+
+
+ <p>Recuerde que el servidor no se ejecuta con su usuario. Es decir,
+ cuando el servidor arranca, est&#225; funcionando con un usuario sin
+ privilegios, generalmente el usuario <code>nobody</code>, o
+ <code>www-data</code>, as&#237; que necesitar&#225; permisos extra para
+ ejecutar los archivos de los que usted es due&#241;o. Generalmente,
+ el m&#233;todo para dar permisos suficientes para que se pueda
+ ejecutar con <code>nobody</code> es dar permisos de ejecuci&#243;n a
+ todo el mundo en el fichero:</p>
+
+ <div class="example"><p><code>
+ chmod a+x first.pl
+ </code></p></div>
+
+ <p>Adem&#225;s, si su programa lee desde o escribe a cualquier otro/s
+ archivo/s, esos archivos necesitar&#225;n tener los permisos correctos
+ para permitir esas acciones.</p>
+
+
+
+ <h3><a name="pathinformation" id="pathinformation">Informaci&#243;n de Ruta y Entorno</a></h3>
+
+
+ <p>Cuando ejecuta un programa desde la l&#237;nea de comandos, usted tiene
+ cierta informaci&#243;n que se le pasa a la shell sin que usted se
+ percate de ello. Por ejemplo, usted tiene un <code>PATH</code>,
+ que le indica a la shell d&#243;nde debe buscar archivos a los que usted
+ hace referencia.</p>
+
+ <p>Cuando un programa se ejecuta a trav&#233;s del servidor web como un
+ programa CGI, puede que no tenga el mismo <code>PATH</code>.
+ Cualquier programa que invoque desde su programa CGI (como por
+ ejemplo <code>sendmail</code>) necesitar&#225; que se le indique la
+ ruta absoluta, as&#237; la shell puede encontrarlos cuando intenta
+ ejecutar su programa CGI.</p>
+
+ <p>Una manifestaci&#243;n com&#250;n de esto es la ruta del int&#233;rprete del
+ script (a menudo <code>perl</code>) indicado en la primera l&#237;nea
+ de su programa CGI, que parecer&#225; algo como:</p>
+
+ <pre class="prettyprint lang-perl">#!/usr/bin/perl</pre>
+
+
+ <p>Aseg&#250;rese de que &#233;ste es de hecho el path de su int&#233;rprete.</p>
+ <div class="warning">
+ Cuando edita scripts CGI en Windows, los caracteres de retorno de
+ carro podr&#237;an a&#241;adirse a la l&#237;nea donde se especifica el int&#233;rprete.
+ Aseg&#250;rese de que los archivos se transfieren al servidor en modo
+ ASCII. Fallar en esto puede acabar con avisos del tipo "Command not
+ found" del Sistema Operativo, debido a que &#233;ste no reconoce los
+ caracteres de final de l&#237;nea interpretados como parte del nombre
+ de fichero del int&#233;rprete.
+ </div>
+
+
+ <h3><a name="missingenv" id="missingenv">Faltan Variables de Entorno</a></h3>
+
+
+ <p>Si su programa CGI depende de <a href="#env">variables de entorno</a> no est&#225;ndar, necesitar&#225;
+ asegurarse de que Apache pasa esas variables.</p>
+
+ <p>Cuando no encuentra ciertas cabeceras HTTP del entorno, aseg&#250;rese
+ de que est&#225;n formateadas seg&#250;n el
+ <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>,
+ secci&#243;n 4.2: Nombres de Cabeceras deben empezar con una letra,
+ seguida solo de letras, n&#250;meros o gui&#243;n. Cualquier cabecera
+ que no cumpla esta regla ser&#225; ignorada de manera silenciosa.</p>
+
+
+
+ <h3><a name="syntaxerrors" id="syntaxerrors">Errores de Programa</a></h3>
+
+
+ <p>La mayor parte de las veces cuando un programa CGI falla, es por un
+ problema en el programa mismo. Esto ocurre generalmente cuando se
+ maneja bien con "esto del CGI", y ya no comete los dos errores
+ mencionados m&#225;s arriba. Lo primero que hay que hacer es asegurarse
+ de que su programa se ejecuta correctamente en l&#237;nea de comandos
+ antes de probarlo a trav&#233;s del servidor web. Por ejemplo,
+ intente:</p>
+
+ <div class="example"><p><code>
+ cd /usr/local/apache2/cgi-bin<br />
+ ./first.pl
+ </code></p></div>
+
+ <p>(No llame al int&#233;rprete de <code>perl</code>. La consola y Apache
+ tienen que poder encontrar el int&#233;rprete usando l&#237;nea
+ <a href="#pathinformation">l&#237;nea de informaci&#243;n</a> en la primera
+ l&#237;nea del script.)</p>
+
+ <p>Lo primero que debe ver escrito por su programa es un conjunto de
+ cabeceras HTTP, incluyendo el <code>Content-Type</code>,
+ seguido de una l&#237;nea en blanco. Si ve alguna otra cosa, Apache
+ devolver&#225; el error <code>Premature end of script headers</code> si
+ intenta lanzar el script en el servidor web. Vea
+ <a href="#writing">Escribiendo un programa CGI</a> m&#225;s arriba para
+ m&#225;s detalle.</p>
+
+
+ <h3><a name="errorlogs" id="errorlogs">Log de Errores</a></h3>
+
+
+ <p>El log de errores es su amigo. Cualquier cosa que vaya mal generar&#225;
+ un mensaje en el log de errores. Deber&#237;a mirar siempre ah&#237; primero.
+ Si el lugar donde est&#225; alojando su sitio web no permite que acceda
+ al log de errores, probablemente deber&#237;a alojarlo en otro sitio.
+ Aprenda a leer el log de errores y se dar&#225; cuenta de que enseguida
+ averiguar&#225; el motivo del error y lo solucionar&#225; r&#225;pidamente.</p>
+
+
+ <h3><a name="suexec" id="suexec">Suexec</a></h3>
+
+
+ <p>El programa de soporte <a href="../suexec.html">suexec</a> permite
+ que programas CGI se ejecuten con permisos de usuario distintos,
+ dependiendo del virtualhost o el directorio home donde se
+ encuentren. Suexec tiene una comprobaci&#243;n de permisos muy estricta,
+ y cualquier fallo en esa comprobaci&#243;n dar&#225; como resultado un error
+ con el mensaje <code>Premature end of script headers</code>.</p>
+
+ <p>Para comprobar si est&#225; usando Suexec, ejecute
+ <code>apachectl -V</code> y compruebe la ubicaci&#243;n de
+ <code>SUEXEC_BIN</code>. Si Apache encuentra un binario
+ <code class="program"><a href="../programs/suexec.html">suexec</a></code> al arrancar, suexec se activar&#225;.</p>
+
+ <p>A menos que comprenda suxec perfectamente, no deber&#237;a usarlo.
+ Para desactivar suexec, basta con eliminar el binario
+ <code class="program"><a href="../programs/suexec.html">suexec</a></code> al que apunta <code>SUEXEC_BIN</code> y
+ reiniciar el servidor. Si despu&#233;s de leer sobre
+ <a href="../suexec.html">suexec</a> todav&#237;a quiere usarlo, entonces
+ ejecute <code>suexec -V</code> para encontrar la ubicaci&#243;n del
+ fichero log de suexec, y use ese log para encontrar que pol&#237;tica no
+ est&#225; cumpliendo.</p>
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="behindscenes" id="behindscenes">&#191;Qu&#233; ocurre entre bastidores?</a></h2>
+
+
+ <p>En cuanto tenga conocimiento avanzado de programaci&#243;n CGI, le ser&#225;
+ &#250;til comprender m&#225;s de lo que ocurre entre bastidores.
+ Espec&#237;ficamente, c&#243;mo el navegador y el servidor se comunican el uno
+ con el otro. Porque aunque est&#233; muy bien escribir un programa que
+ diga "Hola, Mundo.", no tiene una gran utilidad.</p>
+
+ <h3><a name="env" id="env">Variables de Entorno</a></h3>
+
+
+ <p>Las variables de entorno son valores que est&#225;n ah&#237; cuando
+ usa el ordenador. Son cosas &#250;tiles como el path (donde su ordenador
+ busca el archivo espec&#237;fico que se lanza cuando usted escribe un
+ comando), su nombre de usuario, el tipo de terminal que usa, etc.
+ Para una lista completa de la variables de entorno normales que se
+ se usan en su d&#237;a a d&#237;a escriba <code>env</code> en la l&#237;nea de
+ comandos.</p>
+
+ <p>Durante la transacci&#243;n CGI, el servidor y el navegador tambi&#233;n
+ configuran variables de entorno, y as&#237; pueden comunicarse entre
+ ellos. Cosas como el tipo de navegador (Netscape, IE, Lynx), el tipo
+ de servidor (Apache, IIS, WebSite), el nombre del programa CGI que
+ se est&#225; ejecutando, etc.</p>
+
+ <p>Estas variables est&#225;n disponibles para el programador de CGI, y son
+ la mitad de la historia de la comunicaci&#243;n cliente-servidor. La
+ lista completa de las variables necesarias se encuentra en
+ <a href="http://www.ietf.org/rfc/rfc3875">el RFC de Common Gateway
+ Interface</a>.</p>
+
+ <p>Este sencillo programa CGI en Perl mostrar&#225; todas las variables
+ de entorno que se est&#225;n pasando entre el cliente y el navegador. Dos
+ programas similares est&#225;n incluidos en el directorio
+ <code>cgi-bin</code> de la distribuci&#243;n de Apache. Tenga en cuenta
+ que algunas variables son necesarias mientras que otras son
+ opcionales, as&#237; que es posible que vea algunas variables que no
+ est&#225;n en la lista oficial. Adicionalmente, Apache aporta distintas
+ maneras diferentes para que pueda
+ <a href="../env.html">a&#241;adir sus variables de entorno</a> a las
+ b&#225;sicas que se proveen por defecto.</p>
+
+ <pre class="prettyprint lang-perl">#!/usr/bin/perl
+use strict;
+use warnings;
+
+print "Content-type: text/html\n\n";
+
+foreach my $key (keys %ENV) {
+ print "$key --&gt; $ENV{$key}&lt;br&gt;";
+}</pre>
+
+
+
+ <h3><a name="stdin" id="stdin">STDIN y STDOUT</a></h3>
+
+
+ <p>Otra comunicaci&#243;n entre el servidor y el cliente ocurre en la
+ entrada est&#225;ndar (<code>STDIN</code>) y la salida est&#225;ndar
+ (<code>STDOUT</code>). En el contexto normal de cada d&#237;a,
+ <code>STDIN</code> es la entrada con el teclado, o un fichero que se
+ le da a un programa para que act&#250;e sobre &#233;l, y <code>STDOUT</code>
+ generalmente es la consola o la pantalla.</p>
+
+ <p>Cuando hace <code>POST</code> con un formulario de web a un programa
+ CGI, los datos en ese formulario se empaquetan en un formato especial
+ que se entrega a su programa CGI en el <code>STDIN</code>.
+ Entonces el programa puede procesar la informaci&#243;n como si le llegara
+ desde el teclado, o desde un fichero.</p>
+
+ <p>El "formato especial" es muy sencillo. Un nombre de campo y su
+ valor se asocian juntos con el signo igual (=), y pares de valores
+ se asocian juntos con el ampersand &#243; et en espa&#241;ol (&amp;).
+ Caracteres inconvenientes como los espacios, ampersands y signos de
+ igual, se convierten en su equivalente hexadecimal para no impidan
+ el funcionamiento correcto del programa. La cadena de datos al
+ completo ser&#225; algo como:</p>
+
+ <div class="example"><p><code>
+ name=Rich%20Bowen&amp;city=Lexington&amp;state=KY&amp;sidekick=Squirrel%20Monkey
+ </code></p></div>
+
+ <p>A veces tendr&#225; este tipo de cadena de caracteres al final de una
+ URL. Cuando esto ocurre, el servidor pone esa cadena en una variable
+ de entorno que se llama <code>QUERY_STRING</code>. Esto se llama
+ solicitud <code>GET</code>. Su formulario HTML especifica si se usa
+ un <code>GET</code> o un <code>POST</code> para entregar la
+ informaci&#243;n, configurando el atributo <code>METHOD</code> en la
+ etiqueta <code>FORM</code>.</p>
+
+ <p>Su programa es el responsable de convertir esa cadena de
+ caracteres en informaci&#243;n &#250;til. Afortunadamente, hay librer&#237;as y
+ m&#243;dulos disponibles que ayudan a procesar la informaci&#243;n, as&#237; como a
+ gestionar los distintos aspectos de su programa CGI.</p>
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="libraries" id="libraries">M&#243;dulos/librer&#237;as CGI</a></h2>
+
+
+ <p>Cuando escribe programas CGI, deber&#237;a considerar usar una librer&#237;a de
+ c&#243;digo, o m&#243;dulo, para hacer todo el trabajo m&#225;s arduo por usted.
+ Esto lleva a tener menos errores y un desarrollo de c&#243;digo m&#225;s
+ r&#225;pido.</p>
+
+ <p>Si est&#225; escribiendo un programa CGI en Perl, existen m&#243;dulos
+ disponibles en <a href="http://www.cpan.org/">CPAN</a>. El m&#243;dulo m&#225;s
+ conocido para este prop&#243;sito es <code>CGI.pm</code>. Quiz&#225;s quiera
+ considerar <code>CGI::Lite</code>, que implementa una funcionalidad
+ m&#237;nima, que es todo lo que se necesita en la mayor&#237;a de los programas.</p>
+
+ <p>Si est&#225; escribiendo programas CGI en C, hay varidad de opciones. Una
+ de estas es la librer&#237;a <code>CGIC</code>, de
+ <a href="http://www.boutell.com/cgic/">http://www.boutell.com/cgic/</a>.
+ </p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="moreinfo" id="moreinfo">Para m&#225;s informaci&#243;n</a></h2>
+
+
+ <p>La especificaci&#243;n actual de CGI est&#225; disponible en el
+ <a href="http://www.ietf.org/rfc/rfc3875">RFC de Common Gateway
+ Interface</a>.</p>
+
+ <p>Cuando env&#237;e una pregunta sobre un problema de CGI, o bien a una
+ lista de correo, o a un grupo de noticias, aseg&#250;rese de que facilita suficiente
+ informaci&#243;n de lo que ha ocurrido, de lo que espera que ocurra, y de
+ lo que est&#225; ocurriendo en su lugar que es diferente, el servidor que
+ est&#225; ejecutando, en qu&#233; lenguaje CGI est&#225; hecho su programa, y si es
+ posible, el c&#243;digo que falla. Esto har&#225; encontrar el problema mucho m&#225;s
+ f&#225;cil.</p>
+
+ <p>Tenga en cuenta que las preguntas sobre problemas CGI
+ <strong>nunca</strong> deber&#237;an enviarse a la base de datos de bugs de
+ bugs de Apache a menos que est&#233; seguro de haber encontrado un
+ problema en el c&#243;digo fuente de Apache.</p>
+ </div></div>
+<div class="bottomlang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/cgi.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/cgi.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/cgi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
+</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comentarios</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+var comments_shortname = 'httpd';
+var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/cgi.html';
+(function(w, d) {
+ if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
+ d.write('<div id="comments_thread"><\/div>');
+ var s = d.createElement('script');
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+ (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+ }
+ else {
+ d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
+ }
+})(window, document);
+//--><!]]></script></div><div id="footer">
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los t&#233;rminos de <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
+if (typeof(prettyPrint) !== 'undefined') {
+ prettyPrint();
+}
+//--><!]]></script>
+</body></html> \ No newline at end of file
diff --git a/docs/manual/howto/cgi.xml.es b/docs/manual/howto/cgi.xml.es
new file mode 100644
index 0000000000..90eed02716
--- /dev/null
+++ b/docs/manual/howto/cgi.xml.es
@@ -0,0 +1,594 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?>
+<!-- English Revision: 1773247 -->
+<!-- Spanish translation : Daniel Ferradal -->
+<!-- Reviewed by Luis Gil de Bernabé Pfeiffer lgilbernabe[AT]apache.org -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="cgi.xml.meta">
+ <parentdocument href="./">How-To / Tutoriales</parentdocument>
+ <title>Tutorial de Apache: Contenido Dinámico con CGI</title>
+
+ <section id="intro">
+ <title>Introducción</title>
+ <related>
+ <modulelist>
+ <module>mod_alias</module>
+ <module>mod_cgi</module>
+ <module>mod_cgid</module>
+ </modulelist>
+
+ <directivelist>
+ <directive module="mod_mime">AddHandler</directive>
+ <directive module="core">Options</directive>
+ <directive module="mod_alias">ScriptAlias</directive>
+ </directivelist>
+ </related>
+
+ <p>CGI (Common Gateway Interface) es un método por el cual
+ un servidor web puede interactuar con programas externos de
+ generación de contenido, a ellos nos referimos comúnmente como
+ programas CGI o scripts CGI. Es el método más común y sencillo de
+ mostrar contenido dinámico en su sitio web. Este documento es una
+ introducción para configurar CGI en su servidor web Apache, y de
+ iniciación para escribir programas CGI.</p>
+ </section>
+
+ <section id="configuring">
+ <title>Configurando Apache para permitir CGI</title>
+
+ <p>Para conseguir que sus programas CGI funcionen correctamente,
+ deberá configurar Apache para que permita la ejecución de CGI. Hay
+ distintas formas de hacerlo.</p>
+
+ <note type="warning">Nota: Si Apache ha sido compilado con soporte
+ de módulos compartidos, necesitará que el módulo de CGI esté cargado;
+ en su <code>httpd.conf</code> tiene que asegurarse de que la directiva
+ <directive module="mod_so">LoadModule</directive>
+ no ha sido comentada. Una directiva configurada correctamente sería así:
+
+ <highlight language="config">
+ LoadModule cgid_module modules/mod_cgid.so
+ </highlight>
+
+ En Windows, o si usa un mpm que no es multihilo, como prefork, una
+ directiva configurada correctamente podría definirse así:
+
+ <highlight language="config">
+ LoadModule cgi_module modules/mod_cgi.so
+ </highlight></note>
+
+ <section id="scriptalias">
+ <title>ScriptAlias</title>
+
+ <p>La directiva
+ <directive module="mod_alias">ScriptAlias</directive>
+ indica a Apache que un directorio se ha configurado específicamente
+ para programas CGI. Apache asumirá que cada fichero en este
+ directorio es un programa CGI, e intentará ejecutarlos cuando un
+ cliente solicita este recurso.</p>
+
+ <p>La directiva
+ <directive module="mod_alias">ScriptAlias</directive> se puede
+ definir así:</p>
+
+ <highlight language="config">
+ ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
+ </highlight>
+
+ <p>El ejemplo que se muestra es de un archivo de configuración
+ <code>httpd.conf</code> por defecto si usted instaló Apache
+ en la ubicación por defecto. La directiva
+ <directive module="mod_alias">ScriptAlias</directive> es muy
+ parecida a la directiva <directive module="mod_alias">Alias</directive>,
+ ésta define un prefijo de URL que se enlaza a un directorio
+ en particular. <directive>Alias</directive> y
+ <directive>ScriptAlias</directive> se usan generalmente para
+ directorios que se encuentran fuera del directorio
+ <directive module="core">DocumentRoot</directive>. La diferencia
+ entre <directive>Alias</directive> y <directive>ScriptAlias</directive>
+ es que en <directive>ScriptAlias</directive> cualquier elemento
+ debajo de ese prefijo de URL será considerado un programa CGI. Así,
+ el ejemplo de más arriba le indica a Apache que
+ cualquier solicitud para un recurso que comience con
+ <code>/cgi-bin/</code> debería servirse desde el directorio
+ <code>/usr/local/apache2/cgi-bin/</code>, y debería tratarse como un
+ programa CGI.</p>
+
+ <p>Por ejemplo, si se solicita la URL
+ <code>http://www.example.com/cgi-bin/test.pl</code>,
+ Apache intentará ejecutar el archivo
+ <code>/usr/local/apache2/cgi-bin/test.pl</code> y dar
+ el resultado. Por supuesto el archivo debe existir y ser ejecutable,
+ y dar el resultado de una manera específica o Apache devolverá
+ un mensaje de error.</p>
+ </section>
+
+ <section id="nonscriptalias">
+ <title>CGI fuera de directorios ScriptAlias</title>
+
+ <p>Los programas CGI habitualmente se restringen a los directorios de
+ <directive module="mod_alias">ScriptAlias</directive> por razones de
+ seguridad. De esta manera, los administradores pueden controlar de una
+ manera más segura quien puede ejecutar programas CGI. Aun así, si no
+ se toman suficientes precauciones, no hay ninguna razón por la que
+ programas CGI no se puedan ejecutar desde directorios seleccionados de
+ manera arbitraria. Por ejemplo, quizás quiera permitir que usuarios del
+ sistema tengan contenido web en sus directorios home con la directiva
+ <directive module="mod_userdir">UserDir</directive>. Si quieren
+ tener sus propios programas CGI, pero no tienen acceso al directorio
+ principal <code>cgi-bin</code>, necesitarán ser capaces de
+ ejecutar sus scripts CGI en algún otro sitio.</p>
+
+ <p>Hay dos pasos a seguir para permitir la ejecución CGI en directorios
+ seleccionados de manera arbitraria. Primero, el handler
+ <code>cgi-script</code> debe estar activado usando la directiva
+ <directive module="mod_mime">AddHandler</directive> o la directiva
+ <directive module="core">SetHandler</directive>. Segundo, el parámetro
+ <code>ExecCGI</code> debe estar definido en la directiva
+ <directive module="core">Options</directive>.</p>
+ </section>
+
+ <section id="options">
+ <title>Usando Options de manera explícita para permitir ejecución de
+ CGI</title>
+
+ <p>Puede usar la directiva
+ <directive module="core">Options</directive>, en el archivo de
+ configuración principal para especificar que se permite la ejecución
+ de CGI en un directorio en particular:</p>
+
+ <highlight language="config">
+&lt;Directory "/usr/local/apache2/htdocs/somedir"&gt;
+ Options +ExecCGI
+&lt;/Directory&gt;
+ </highlight>
+
+ <p>Esta directiva de aquí arriba le indica a Apache que debe
+ permitir la ejecución de archivos CGI. También necesitará indicarle
+ al servidor que los archivos son archivos CGI. La directiva
+ <directive module="mod_mime">AddHandler</directive> le indica al
+ servidor que debe tratar a todos los archivos con la extensión
+ <code>cgi</code> o <code>pl</code> como programas CGI:</p>
+
+ <highlight language="config">
+ AddHandler cgi-script .cgi .pl
+ </highlight>
+ </section>
+
+ <section id="htaccess">
+ <title>Ficheros .htaccess</title>
+
+ <p>El <a href="htaccess.html">tutorial <code>.htaccess</code></a>
+ enseña como activar programas CGI si no tienes acceso a
+ <code>httpd.conf</code>.</p>
+ </section>
+
+ <section id="userdir">
+ <title>Directorios de Usuario</title>
+
+ <p>Para permitir la ejecución de programas CGI para cualquier
+ archivo que acabe en <code>.cgi</code> en directorios de usuario,
+ puedes usar la siguiente configuración:</p>
+
+ <highlight language="config">
+&lt;Directory "/home/*/public_html"&gt;
+ Options +ExecCGI
+ AddHandler cgi-script .cgi
+&lt;/Directory&gt;
+ </highlight>
+
+ <p>Si quiere designar un subdirectorio <code>cgi-bin</code> dentro
+ de un directorio de usuario en el que todos los ficheros serán
+ tratados como un programa CGI, puede usar lo siguiente:</p>
+
+ <highlight language="config">
+&lt;Directory "/home/*/public_html/cgi-bin"&gt;
+ Options ExecCGI
+ SetHandler cgi-script
+&lt;/Directory&gt;
+ </highlight>
+ </section>
+ </section>
+
+ <section id="writing">
+ <title>Escribiendo un programa CGI</title>
+
+ <p>Hay dos diferencias principales entre programación ``regular'' y
+ programación en CGI.</p>
+
+ <p>Primera, el resultado al completo de tu programa CGI debe estar
+ precedido de una cabecera <glossary>MIME-type</glossary>. Esta
+ cabecera HTTP le indica al cliente que tipo de contenido está
+ recibiendo. La mayor parte de las veces, ésto será algo como:</p>
+
+ <example>
+ Content-type: text/html
+ </example>
+
+ <p>Segunda, el resultado debe estar en formato HTML, o cualquier
+ otro formato que su navegador sea capaz de mostrar. La mayor
+ parte de las veces, será HTML, pero otras escribirá un programa
+ CGI que devuelve una imagen gif, u otro contenido no-HTML.</p>
+
+ <p>Aparte de estas dos cosas, escribir un programa en CGI se
+ parecerá bastante a cualquier otro programa que vaya a escribir.
+ </p>
+
+
+ <section id="firstcgi">
+ <title>Su primer programa CGI</title>
+
+ <p>A continuación podrá ver un ejemplo de programa CGI que muestra
+ una línea de texto en su navegador. Escriba lo siguiente,
+ guárdelo en un archivo con el nombre <code>first.pl</code>, y
+ póngalo en su directorio <code>cgi-bin</code>.</p>
+
+ <highlight language="perl">
+#!/usr/bin/perl
+print "Content-type: text/html\n\n";
+print "Hola, Mundo.";
+ </highlight>
+
+ <p>Incluso si Perl no le resulta familiar, podrá ver lo que está
+ ocurriendo aquí. La primera línea le dice a Apache (o a
+ cualquier shell en la que se esté ejecutando) que este programa
+ puede ejecutarse con el intérprete en la ubicación
+ <code>/usr/bin/perl</code>. La segunda línea imprime la
+ declaración de Content-Type que mencionamos antes, seguida de
+ dos pares de retornos de carro. Esto pone una línea en blanco
+ después de la cabecera para indicar el final de las cabeceras
+ HTTP, y el comienzo del cuerpo del contenido. La tercera
+ imprime la cadena de caracteres "Hola, Mundo.". Y ese es el
+ final del programa.</p>
+
+ <p>Si lo abre con su navegador favorito y le dice que solicite la
+ dirección</p>
+
+ <example>
+ http://www.example.com/cgi-bin/first.pl
+ </example>
+
+ <p>o donde quiera que pusiera el archivo, verá una línea
+ <code>Hola, Mundo.</code> aparecerán la ventana del navegador. No es
+ muy emocionante, pero una vez que consiga que funcione podrá hacer
+ lo mismo con casi cualquier programa.</p>
+ </section>
+ </section>
+
+ <section id="troubleshoot">
+ <title>¡Pero todavía no funciona!</title>
+
+ <p>Hay 4 cosas básicas que puede llegar a ver en su navegador cuando
+ intenta acceder a un programa CGI desde la web:</p>
+
+ <dl>
+ <dt>El resultado del programa CGI</dt>
+ <dd>¡Genial! Esto indica que todo funcionó correctamente. Si el
+ resultado es correcto, pero el navegador no lo procesa
+ correctamente, asegúrese de que tiene especificado
+ correctamente el <code>Content-Type</code> en su programa
+ CGI.</dd>
+
+ <dt>El código fuente de su programa CGI o un mensaje del tipo
+ "POST Method Not Allowed".</dt>
+
+ <dd>Eso significa que no ha configurado Apache de manera
+ apropiada para interpretar su programa CGI. Relea la sección
+ de <a href="#configuring">Configurando Apache</a> e intente
+ encontrar qué le falta.</dd>
+
+ <dt>Un mensaje que empieza con "Forbidden"</dt>
+ <dd>Eso significa que hay un problema de permisos. Compruebe el
+ <a href="#errorlogs">Log de Errores de Apache</a> y la
+ sección de más abajo de <a href="#permissions">Permisos de
+ Fichero</a>.</dd>
+
+ <dt>Un mensaje indicando "Internal Server Error"</dt>
+ <dd>Si comprueba el <a href="#errorlogs">Log de errores de
+ Apache</a>, probablemente encontrará que indica "Premature
+ end of script headers", posiblemente acompañado de otro
+ mensaje de error generado por su programa CGI. En este caso,
+ querrá comprobar cada una de las secciones de más adelante
+ para ver qué impide que su programa CGI genere las cabeceras
+ HTTP adecuadas.</dd>
+ </dl>
+
+ <section id="permissions">
+ <title>Permisos de Fichero</title>
+
+ <p>Recuerde que el servidor no se ejecuta con su usuario. Es decir,
+ cuando el servidor arranca, está funcionando con un usuario sin
+ privilegios, generalmente el usuario <code>nobody</code>, o
+ <code>www-data</code>, así que necesitará permisos extra para
+ ejecutar los archivos de los que usted es dueño. Generalmente,
+ el método para dar permisos suficientes para que se pueda
+ ejecutar con <code>nobody</code> es dar permisos de ejecución a
+ todo el mundo en el fichero:</p>
+
+ <example>
+ chmod a+x first.pl
+ </example>
+
+ <p>Además, si su programa lee desde o escribe a cualquier otro/s
+ archivo/s, esos archivos necesitarán tener los permisos correctos
+ para permitir esas acciones.</p>
+
+ </section>
+
+ <section id="pathinformation">
+ <title>Información de Ruta y Entorno</title>
+
+ <p>Cuando ejecuta un programa desde la línea de comandos, usted tiene
+ cierta información que se le pasa a la shell sin que usted se
+ percate de ello. Por ejemplo, usted tiene un <code>PATH</code>,
+ que le indica a la shell dónde debe buscar archivos a los que usted
+ hace referencia.</p>
+
+ <p>Cuando un programa se ejecuta a través del servidor web como un
+ programa CGI, puede que no tenga el mismo <code>PATH</code>.
+ Cualquier programa que invoque desde su programa CGI (como por
+ ejemplo <code>sendmail</code>) necesitará que se le indique la
+ ruta absoluta, así la shell puede encontrarlos cuando intenta
+ ejecutar su programa CGI.</p>
+
+ <p>Una manifestación común de esto es la ruta del intérprete del
+ script (a menudo <code>perl</code>) indicado en la primera línea
+ de su programa CGI, que parecerá algo como:</p>
+
+ <highlight language="perl">
+ #!/usr/bin/perl
+ </highlight>
+
+ <p>Asegúrese de que éste es de hecho el path de su intérprete.</p>
+ <note type="warning">
+ Cuando edita scripts CGI en Windows, los caracteres de retorno de
+ carro podrían añadirse a la línea donde se especifica el intérprete.
+ Asegúrese de que los archivos se transfieren al servidor en modo
+ ASCII. Fallar en esto puede acabar con avisos del tipo "Command not
+ found" del Sistema Operativo, debido a que éste no reconoce los
+ caracteres de final de línea interpretados como parte del nombre
+ de fichero del intérprete.
+ </note>
+ </section>
+
+ <section id="missingenv">
+ <title>Faltan Variables de Entorno</title>
+
+ <p>Si su programa CGI depende de <a
+ href="#env">variables de entorno</a> no estándar, necesitará
+ asegurarse de que Apache pasa esas variables.</p>
+
+ <p>Cuando no encuentra ciertas cabeceras HTTP del entorno, asegúrese
+ de que están formateadas según el
+ <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>,
+ sección 4.2: Nombres de Cabeceras deben empezar con una letra,
+ seguida solo de letras, números o guión. Cualquier cabecera
+ que no cumpla esta regla será ignorada de manera silenciosa.</p>
+
+ </section>
+
+ <section id="syntaxerrors">
+ <title>Errores de Programa</title>
+
+ <p>La mayor parte de las veces cuando un programa CGI falla, es por un
+ problema en el programa mismo. Esto ocurre generalmente cuando se
+ maneja bien con "esto del CGI", y ya no comete los dos errores
+ mencionados más arriba. Lo primero que hay que hacer es asegurarse
+ de que su programa se ejecuta correctamente en línea de comandos
+ antes de probarlo a través del servidor web. Por ejemplo,
+ intente:</p>
+
+ <example>
+ cd /usr/local/apache2/cgi-bin<br/>
+ ./first.pl
+ </example>
+
+ <p>(No llame al intérprete de <code>perl</code>. La consola y Apache
+ tienen que poder encontrar el intérprete usando línea
+ <a href="#pathinformation">línea de información</a> en la primera
+ línea del script.)</p>
+
+ <p>Lo primero que debe ver escrito por su programa es un conjunto de
+ cabeceras HTTP, incluyendo el <code>Content-Type</code>,
+ seguido de una línea en blanco. Si ve alguna otra cosa, Apache
+ devolverá el error <code>Premature end of script headers</code> si
+ intenta lanzar el script en el servidor web. Vea
+ <a href="#writing">Escribiendo un programa CGI</a> más arriba para
+ más detalle.</p>
+ </section>
+
+ <section id="errorlogs">
+ <title>Log de Errores</title>
+
+ <p>El log de errores es su amigo. Cualquier cosa que vaya mal generará
+ un mensaje en el log de errores. Debería mirar siempre ahí primero.
+ Si el lugar donde está alojando su sitio web no permite que acceda
+ al log de errores, probablemente debería alojarlo en otro sitio.
+ Aprenda a leer el log de errores y se dará cuenta de que enseguida
+ averiguará el motivo del error y lo solucionará rápidamente.</p>
+ </section>
+
+ <section id="suexec">
+ <title>Suexec</title>
+
+ <p>El programa de soporte <a href="../suexec.html">suexec</a> permite
+ que programas CGI se ejecuten con permisos de usuario distintos,
+ dependiendo del virtualhost o el directorio home donde se
+ encuentren. Suexec tiene una comprobación de permisos muy estricta,
+ y cualquier fallo en esa comprobación dará como resultado un error
+ con el mensaje <code>Premature end of script headers</code>.</p>
+
+ <p>Para comprobar si está usando Suexec, ejecute
+ <code>apachectl -V</code> y compruebe la ubicación de
+ <code>SUEXEC_BIN</code>. Si Apache encuentra un binario
+ <program>suexec</program> al arrancar, suexec se activará.</p>
+
+ <p>A menos que comprenda suxec perfectamente, no debería usarlo.
+ Para desactivar suexec, basta con eliminar el binario
+ <program>suexec</program> al que apunta <code>SUEXEC_BIN</code> y
+ reiniciar el servidor. Si después de leer sobre
+ <a href="../suexec.html">suexec</a> todavía quiere usarlo, entonces
+ ejecute <code>suexec -V</code> para encontrar la ubicación del
+ fichero log de suexec, y use ese log para encontrar que política no
+ está cumpliendo.</p>
+ </section>
+ </section>
+
+ <section id="behindscenes">
+ <title>¿Qué ocurre entre bastidores?</title>
+
+ <p>En cuanto tenga conocimiento avanzado de programación CGI, le será
+ útil comprender más de lo que ocurre entre bastidores.
+ Específicamente, cómo el navegador y el servidor se comunican el uno
+ con el otro. Porque aunque esté muy bien escribir un programa que
+ diga "Hola, Mundo.", no tiene una gran utilidad.</p>
+
+ <section id="env">
+ <title>Variables de Entorno</title>
+
+ <p>Las variables de entorno son valores que están ahí cuando
+ usa el ordenador. Son cosas útiles como el path (donde su ordenador
+ busca el archivo específico que se lanza cuando usted escribe un
+ comando), su nombre de usuario, el tipo de terminal que usa, etc.
+ Para una lista completa de la variables de entorno normales que se
+ se usan en su día a día escriba <code>env</code> en la línea de
+ comandos.</p>
+
+ <p>Durante la transacción CGI, el servidor y el navegador también
+ configuran variables de entorno, y así pueden comunicarse entre
+ ellos. Cosas como el tipo de navegador (Netscape, IE, Lynx), el tipo
+ de servidor (Apache, IIS, WebSite), el nombre del programa CGI que
+ se está ejecutando, etc.</p>
+
+ <p>Estas variables están disponibles para el programador de CGI, y son
+ la mitad de la historia de la comunicación cliente-servidor. La
+ lista completa de las variables necesarias se encuentra en
+ <a href="http://www.ietf.org/rfc/rfc3875">el RFC de Common Gateway
+ Interface</a>.</p>
+
+ <p>Este sencillo programa CGI en Perl mostrará todas las variables
+ de entorno que se están pasando entre el cliente y el navegador. Dos
+ programas similares están incluidos en el directorio
+ <code>cgi-bin</code> de la distribución de Apache. Tenga en cuenta
+ que algunas variables son necesarias mientras que otras son
+ opcionales, así que es posible que vea algunas variables que no
+ están en la lista oficial. Adicionalmente, Apache aporta distintas
+ maneras diferentes para que pueda
+ <a href="../env.html">añadir sus variables de entorno</a> a las
+ básicas que se proveen por defecto.</p>
+
+ <highlight language="perl">
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+print "Content-type: text/html\n\n";
+
+foreach my $key (keys %ENV) {
+ print "$key --&gt; $ENV{$key}&lt;br&gt;";
+}
+ </highlight>
+ </section>
+
+ <section id="stdin">
+ <title>STDIN y STDOUT</title>
+
+ <p>Otra comunicación entre el servidor y el cliente ocurre en la
+ entrada estándar (<code>STDIN</code>) y la salida estándar
+ (<code>STDOUT</code>). En el contexto normal de cada día,
+ <code>STDIN</code> es la entrada con el teclado, o un fichero que se
+ le da a un programa para que actúe sobre él, y <code>STDOUT</code>
+ generalmente es la consola o la pantalla.</p>
+
+ <p>Cuando hace <code>POST</code> con un formulario de web a un programa
+ CGI, los datos en ese formulario se empaquetan en un formato especial
+ que se entrega a su programa CGI en el <code>STDIN</code>.
+ Entonces el programa puede procesar la información como si le llegara
+ desde el teclado, o desde un fichero.</p>
+
+ <p>El "formato especial" es muy sencillo. Un nombre de campo y su
+ valor se asocian juntos con el signo igual (=), y pares de valores
+ se asocian juntos con el ampersand ó et en español (&amp;).
+ Caracteres inconvenientes como los espacios, ampersands y signos de
+ igual, se convierten en su equivalente hexadecimal para no impidan
+ el funcionamiento correcto del programa. La cadena de datos al
+ completo será algo como:</p>
+
+ <example>
+ name=Rich%20Bowen&amp;city=Lexington&amp;state=KY&amp;sidekick=Squirrel%20Monkey
+ </example>
+
+ <p>A veces tendrá este tipo de cadena de caracteres al final de una
+ URL. Cuando esto ocurre, el servidor pone esa cadena en una variable
+ de entorno que se llama <code>QUERY_STRING</code>. Esto se llama
+ solicitud <code>GET</code>. Su formulario HTML especifica si se usa
+ un <code>GET</code> o un <code>POST</code> para entregar la
+ información, configurando el atributo <code>METHOD</code> en la
+ etiqueta <code>FORM</code>.</p>
+
+ <p>Su programa es el responsable de convertir esa cadena de
+ caracteres en información útil. Afortunadamente, hay librerías y
+ módulos disponibles que ayudan a procesar la información, así como a
+ gestionar los distintos aspectos de su programa CGI.</p>
+ </section>
+ </section>
+
+ <section id="libraries">
+ <title>Módulos/librerías CGI</title>
+
+ <p>Cuando escribe programas CGI, debería considerar usar una librería de
+ código, o módulo, para hacer todo el trabajo más arduo por usted.
+ Esto lleva a tener menos errores y un desarrollo de código más
+ rápido.</p>
+
+ <p>Si está escribiendo un programa CGI en Perl, existen módulos
+ disponibles en <a href="http://www.cpan.org/">CPAN</a>. El módulo más
+ conocido para este propósito es <code>CGI.pm</code>. Quizás quiera
+ considerar <code>CGI::Lite</code>, que implementa una funcionalidad
+ mínima, que es todo lo que se necesita en la mayoría de los programas.</p>
+
+ <p>Si está escribiendo programas CGI en C, hay varidad de opciones. Una
+ de estas es la librería <code>CGIC</code>, de
+ <a href="http://www.boutell.com/cgic/">http://www.boutell.com/cgic/</a>.
+ </p>
+ </section>
+
+ <section id="moreinfo">
+ <title>Para más información</title>
+
+ <p>La especificación actual de CGI está disponible en el
+ <a href="http://www.ietf.org/rfc/rfc3875">RFC de Common Gateway
+ Interface</a>.</p>
+
+ <p>Cuando envíe una pregunta sobre un problema de CGI, o bien a una
+ lista de correo, o a un grupo de noticias, asegúrese de que facilita suficiente
+ información de lo que ha ocurrido, de lo que espera que ocurra, y de
+ lo que está ocurriendo en su lugar que es diferente, el servidor que
+ está ejecutando, en qué lenguaje CGI está hecho su programa, y si es
+ posible, el código que falla. Esto hará encontrar el problema mucho más
+ fácil.</p>
+
+ <p>Tenga en cuenta que las preguntas sobre problemas CGI
+ <strong>nunca</strong> deberían enviarse a la base de datos de bugs de
+ bugs de Apache a menos que esté seguro de haber encontrado un
+ problema en el código fuente de Apache.</p>
+ </section>
+</manualpage>
diff --git a/docs/manual/howto/cgi.xml.meta b/docs/manual/howto/cgi.xml.meta
index 3070905d45..7eaed2ca20 100644
--- a/docs/manual/howto/cgi.xml.meta
+++ b/docs/manual/howto/cgi.xml.meta
@@ -8,6 +8,7 @@
<variants>
<variant>en</variant>
+ <variant>es</variant>
<variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
diff --git a/docs/manual/howto/htaccess.html b/docs/manual/howto/htaccess.html
index afb2b04fe2..f9aa7ff1aa 100644
--- a/docs/manual/howto/htaccess.html
+++ b/docs/manual/howto/htaccess.html
@@ -4,6 +4,10 @@ URI: htaccess.html.en
Content-Language: en
Content-type: text/html; charset=ISO-8859-1
+URI: htaccess.html.es
+Content-Language: es
+Content-type: text/html; charset=ISO-8859-1
+
URI: htaccess.html.fr
Content-Language: fr
Content-type: text/html; charset=ISO-8859-1
diff --git a/docs/manual/howto/htaccess.html.es b/docs/manual/howto/htaccess.html.es
new file mode 100644
index 0000000000..f4db6d769c
--- /dev/null
+++ b/docs/manual/howto/htaccess.html.es
@@ -0,0 +1,464 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
+<!--
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ This file is generated from xml source: DO NOT EDIT
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ -->
+<title>Tutorial del Servidor Apache HTTP: Ficheros .htaccess - Servidor Apache HTTP Versi&#243;n 2.4</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
+<script src="../style/scripts/prettify.min.js" type="text/javascript">
+</script>
+
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p>
+<p class="apache">Versi&#243;n 2.4 del Servidor HTTP Apache</p>
+<img alt="" src="../images/feather.png" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentaci&#243;n</a> &gt; <a href="../">Versi&#243;n 2.4</a> &gt; <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Tutorial del Servidor Apache HTTP: Ficheros .htaccess</h1>
+<div class="toplang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/htaccess.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/htaccess.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Portugu&#234;s (Brasil)">&nbsp;pt-br&nbsp;</a></p>
+</div>
+
+ <p>Los ficheros <code>.htaccess</code> facilitan una forma de realizar
+ cambios en la configuraci&#243;n en contexto directorio.</p>
+</div>
+<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Ficheros .htaccess</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#what">Qu&#233; son/C&#243;mo usarlos</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#when">Cuando (no) usar ficheros .htaccess</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#how">How directives are applied</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#auth">Ejemplo de Autenticaci&#243;n</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#ssi">Ejemplo de Server Side Includes</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#rewrite">Reglas de Rewrite en ficheros .htaccess</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#cgi">Ejemplo de CGI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Resoluci&#243;n de problemas</a></li>
+</ul><h3>Consulte tambi&#233;n</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">Ficheros .htaccess</a></h2>
+ <table class="related"><tr><th>M&#243;dulos Relacionados</th><th>Directivas Relacionadas</th></tr><tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li><li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li><li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code></li><li><code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code></li></ul></td></tr></table>
+
+ <div class="note">Deber&#237;a evitar usar ficheros <code>.htaccess</code> completamente si
+ tiene acceso al fichero de configuraci&#243;n principal de httpd. Usar ficheros
+ <code>.htaccess</code> ralentiza su servidor Apache http. Cualquier
+ directiva que pueda incluir en un fichero <code>.htaccess</code>
+ estar&#225; mejor configurada dentro de una secci&#243;n
+ <code class="directive"><a href="../mod/core.html#directory">Directory</a></code>, tendr&#225; el mismo efecto y
+ mejor rendimiento.</div>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="what" id="what">Qu&#233; son/C&#243;mo usarlos</a></h2>
+
+
+ <p>Los ficheros <code>.htaccess</code> (o "ficheros de configuraci&#243;n
+ distribuida") facilitan una forma de realizar cambios en la configuraci&#243;n
+ en contexto directorio. Un fichero, que contiene una o m&#225;s directivas, se
+ coloca en un documento espec&#237;fico de un directorio, y estas directivas
+ aplican a ese directorio y todos sus subdirectorios.</p>
+
+ <div class="note"><h3>Nota:</h3>
+ <p>Si quiere llamar a su fichero <code>.htaccess</code> de otra manera,
+ puede cambiar el nombre del fichero usando la directiva <code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code>. Por ejemplo, si usted prefiere
+ llamar al fichero <code>.config</code>, entonces puede poner lo siguiente
+ en el fichero de configuraci&#243;n de su servidor:</p>
+
+ <pre class="prettyprint lang-config">AccessFileName ".config"</pre>
+
+ </div>
+
+ <p>Generalmente, los ficheros <code>.htaccess</code> usan la misma sint&#225;xis
+ que los <a href="../configuring.html#syntax">ficheros de la configuraci&#243;n
+ principal</a>. Lo que puede utilizar en estos ficheros lo determina la
+ directiva <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Esta directiva
+ especifica, en categor&#237;as, qu&#233; directivas tendr&#225;n efecto si se encuentran en
+ un fichero <code>.htaccess</code>. Si se permite una directiva en un fichero
+ <code>.htaccess</code>, la documentaci&#243;n para esa directiva contendr&#225; una
+ secci&#243;n Override, especificando qu&#233; valor debe ir en
+ <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> para que se permita esa
+ directiva.</p>
+
+ <p>Por ejemplo, si busca en la documentaci&#243;n la directiva <code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code>, encontrar&#225; que se permite en
+ ficheros <code>.htaccess</code>. (Vea la l&#237;nea de Contexto en el sumario de
+ la directiva.) La l&#237;nea <a href="../mod/directive-dict.html#Context">Override</a> muestra
+ <code>FileInfo</code>. De este modo, debe tener al menos
+ <code>AllowOverride FileInfo</code> para que esta directiva se aplique en
+ ficheros <code>.htaccess</code>.</p>
+
+ <div class="example"><h3>Ejemplo:</h3><table>
+ <tr>
+ <td><a href="../mod/directive-dict.html#Context">Context:</a></td>
+ <td>server config, virtual host, directory, .htaccess</td>
+ </tr>
+
+ <tr>
+ <td><a href="../mod/directive-dict.html#Override">Override:</a></td>
+ <td>FileInfo</td>
+ </tr>
+ </table></div>
+
+ <p>Si no est&#225; seguro de cu&#225;ndo, una directiva en concreto, se puede usar en un
+ fichero <code>.htaccess</code>, consulte la documentaci&#243;n para esa directiva,
+ y compruebe la l&#237;nea Context buscando ".htaccess".</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="when" id="when">Cuando (no) usar ficheros .htaccess</a></h2>
+
+ <p>Generalmente, solo deber&#237;a usar ficheros <code>.htaccess</code> cuando no
+ tiene acceso al fichero principal de configuraci&#243;n del servidor. Hay, por
+ ejemplo, una creencia err&#243;nea de que la autenticaci&#243;n de usuario deber&#237;a
+ hacerse siempre dentro de ficheros <code>.htaccess</code>, y, m&#225;s recientemente, otra creencia err&#243;nea de que las directivas de
+ <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> deben ir en ficheros <code>.htaccess</code>.
+ Esto sencillamente no es el caso. Puede poner las configuraciones de
+ autenticaci&#243;n de usuario en la configuraci&#243;n principal del servidor, y esto
+ es de hecho, el m&#233;todo preferido de configurar Apache. Del mismo modo, las
+ directivas <code>mod_rewrite</code> funcionan mejor, en muchos sentidos, en
+ el fichero de configuraci&#243;n principal del servidor.</p>
+
+ <p>Los ficheros <code>.htaccess</code> deber&#237;an usarse cuando su proveedor
+ de contenidos le permite hacer modificaciones de configuraci&#243;n
+ en contexto directorio, pero usted no tiene acceso de root en el servidor.
+ En el caso de que el administrador no est&#233; dispuesto a hacer cambios
+ frecuentes en la configuraci&#243;n, puede que sea necesario permitir a usuarios
+ individuales realizar estos cambios de configuraci&#243;n en ficheros
+ <code>.htaccess</code> por ellos mismos. Lo cual ocurre a menudo, por
+ ejemplo, en casos donde los ISP est&#225;n albergando m&#250;ltiples sitios web de
+ usuario en una sola m&#225;quina, y quieren que sus usuarios tengan la
+ posibilidad de modificar sus configuraciones.</p>
+
+ <p>Aun as&#237;, generalmente, el uso de ficheros <code>.htaccess</code> deber&#237;a
+ evitarse cuando sea posible. Cualquier configuraci&#243;n que considerar&#237;a poner
+ en un fichero <code>.htaccess</code>, puede usarse con la misma efectividad
+ en una secci&#243;n <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> en el fichero de configuraci&#243;n
+ del servidor.</p>
+
+ <p>Hay dos razones para evitar el uso de ficheros <code>.htaccess</code>.</p>
+
+ <p>La primera es el rendimiento. Cuando <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
+ est&#225; configurado para permitir el uso de ficheros <code>.htaccess</code>,
+ httpd buscar&#225; ficheros <code>.htaccess</code> en cada directorio. As&#237;,
+ permitiendo ficheros <code>.htaccess</code> provoca una p&#233;rdida de
+ rendimiento, &#161;incluso aunque no los use! Adem&#225;s, los ficheros
+ <code>.htaccess</code> se cargan cada vez que se solicita un documento.</p>
+
+ <p>Adem&#225;s tenga en cuenta que httpd debe buscar ficheros
+ <code>.htaccess</code> en todos los directorios de mayor jerarqu&#237;a,
+ para poder terner la lista completa de directivas que debe aplicar. (Vea
+ la secci&#243;n sobre <a href="#how">C&#243;mo se aplican las directivas</a>.) As&#237;, si
+ se solicita un fichero de un directorio <code>/www/htdocs/example</code>,
+ httpd debe buscar los siguientes ficheros:</p>
+
+ <div class="example"><p><code>
+ /.htaccess<br />
+ /www/.htaccess<br />
+ /www/htdocs/.htaccess<br />
+ /www/htdocs/example/.htaccess
+ </code></p></div>
+
+ <p>De esta manera, por cada acceso a un fichero de ese directorio, hay 4
+ accesos adicionales al sistema de ficheros, incluso si ninguno de esos
+ ficheros est&#225; presente. (Tenga en cuenta que este caso solo se dar&#237;a si los
+ ficheros <code>.htaccess</code> est&#225;n activados en <code>/</code>, que
+ generalmente no es el caso.).</p>
+
+ <p>En el caso de las directivas <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>, en el contexto de
+ <code>.htaccess</code> estas expresiones regulares deben recompilarse con
+ cada solicitud a ese directorio, cuando en el contexto de configuraci&#243;n del
+ servidor solo se compilan una vez y se cachean. Adicionalmente, las reglas
+ en s&#237; mismas son m&#225;s complicadas, puesto que uno debe sortear las
+ restricciones que vienen acompa&#241;adas del contexto directorio y
+ <code>mod_rewrite</code>. Consulte la <a href="../rewrite/intro.html#htaccess">Gu&#237;a de Rewrite</a> para un mayor
+ detalle sobre este tema.</p>
+
+ <p>La segunda consideraci&#243;n es de seguridad. Estar&#225; permitiendo que usuarios
+ modifiquen la configuraci&#243;n del servidor, lo cual puede dar lugar a cambios sobre los que usted no tendr&#225; ning&#250;n control. Medite profundamente si debe
+ dar a sus usuarios ese privilegio. Adem&#225;s tenga en cuenta que dar a los usuarios menos privilegios de los que necesitan dar&#225; lugar a m&#225;s peticiones
+ de soporte. Aseg&#250;rese de que le indica a sus usuarios claramente el nivel de privilegios que les est&#225; dando. Especificando exactamente c&#243;mo ha
+ configurado <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>, e inv&#237;teles
+ a revisar la documentaci&#243;n relacionada, lo cual le ahorrar&#225;
+ bastantes confusiones m&#225;s adelante.</p>
+
+ <p>Tenga en cuenta que esto es equivalente por completo a poner un fichero
+ <code>.htaccess</code> en un directorio <code>/www/htdocs/example</code>
+ con una directiva, y poner la misma directiva en una secci&#243;n
+ Directory <code>&lt;Directory "/www/htdocs/example"&gt;</code> en su
+ configuraci&#243;n principal del servidor:</p>
+
+ <p>Fichero <code>.htaccess</code> en <code>/www/htdocs/example</code>:</p>
+
+ <div class="example"><h3>Contenido de fichero .htaccess en
+ <code>/www/htdocs/example</code></h3><pre class="prettyprint lang-config">AddType text/example ".exm"</pre>
+</div>
+
+ <div class="example"><h3>Secci&#243;n de su fichero <code>httpd.conf</code></h3><pre class="prettyprint lang-config">&lt;Directory "/www/htdocs/example"&gt;
+ AddType text/example ".exm"
+&lt;/Directory&gt;</pre>
+</div>
+
+ <p>Aun as&#237;, poniendo &#233;sta en el fichero de configuraci&#243;n dar&#225; como resultado
+ una menor p&#233;rdida de rendimiento, y como la configuraci&#243;n se carga una vez
+ cuando el httpd arranca, en lugar de cada vez que se solicita un fichero.</p>
+
+ <p>El uso de ficheros <code>.htaccess</code> puede desactivarse por completo
+ configurando la directiva <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
+ a <code>none</code>:</p>
+
+ <pre class="prettyprint lang-config">AllowOverride None</pre>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="how" id="how">How directives are applied</a></h2>
+
+ <p>Las directivas de configuraci&#243;n que se encuentran en el fichero
+ <code>.htaccess</code> se aplican al directorio en el que el fichero
+ <code>.htaccess</code> se encuentra, y a todos sus subdirectorios. Sin
+ embargo, es importante recordar que puede haber otros ficheros
+ <code>.htaccess</code> en directorios previos. Las directivas se aplican en
+ el orden en el que se encuentran. Por lo tanto, un fichero
+ <code>.htaccess</code> puede sobrescribir directivas que se encuentran
+ en ficheros <code>.htaccess</code> que se encuentran en directorios previos
+ del &#225;rbol de directorios. Y estos, en cambio, pueden haber sobrescrito
+ directivas que se encontraban m&#225;s arriba, o en el fichero principal de
+ configuraci&#243;n del servidor mismo.</p>
+
+ <p>Ejemplo:</p>
+
+ <p>En el directorio <code>/www/htdocs/example1</code> tenemos un fichero
+ <code>.htaccess</code> que contiene lo siguiente:</p>
+
+ <pre class="prettyprint lang-config">Options +ExecCGI</pre>
+
+
+ <p>(Nota: debe terner "<code>AllowOverride Options</code>" configurado para
+ permitir el uso de la directiva "<code class="directive"><a href="../mod/core.html#options">Options</a></code>" en ficheros
+ <code>.htaccess</code> files.)</p>
+
+ <p>En el directorio <code>/www/htdocs/example1/example2</code> tenemos un
+ fichero <code>.htaccess</code> que contiene:</p>
+
+ <pre class="prettyprint lang-config">Options Includes</pre>
+
+
+ <p>Por este segundo fichero <code>.htaccess</code>, en el directorio
+ <code>/www/htdocs/example1/example2</code>, la ejecuci&#243;n de CGI execution no
+ est&#225; permitida, porque solo se ha definido <code>Options Includes</code>,
+ que sobrescribe completamente una configuraci&#243;n previa que se pudiera haber
+ definido.</p>
+
+ <h3><a name="merge" id="merge">Incorporando el .htaccess en los ficheros de
+ configuraci&#243;n principal</a></h3>
+
+ <p>Como se ha comentado en la documentaci&#243;n en las <a href="../sections.html">Secciones de Configuraci&#243;n</a>, los ficheros
+ <code>.htaccess</code> pueden sobrescribir las secciones <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> por el directorio
+ correspondiente, pero se sobrescribir&#225;n por otros tipos de secciones de
+ configuraci&#243;n de los ficheros de configuraci&#243;n principal. Este hecho se
+ puede usar para forzar ciertas configuraciones, incluso en presencia
+ de una configuraci&#243;n laxa de
+ <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Por ejemplo, para
+ prevenir la ejecuci&#243;n de un script mientras se permite cualquier otra cosa
+ en <code>.htaccess</code> puede usar:</p>
+
+ <pre class="prettyprint lang-config">&lt;Directory "/www/htdocs"&gt;
+ AllowOverride All
+&lt;/Directory&gt;
+
+&lt;Location "/"&gt;
+ Options +IncludesNoExec -ExecCGI
+&lt;/Location&gt;</pre>
+
+
+ <div class="note">Este ejemplo asume que su <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> es <code>/www/htdocs</code>.</div>
+
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="auth" id="auth">Ejemplo de Autenticaci&#243;n</a></h2>
+
+ <p>Si salt&#243; directamente a esta parte del documento para averiguar como
+ hacer la autenticaci&#243;n, es important que tenga en cuenta una cosa. Hay una
+ creencia err&#243;nea de que necesita usar ficheros <code>.htaccess</code> para
+ configurar autenticaci&#243;n con contrase&#241;a. Este no es el caso. Colocar las
+ directivas de autenticaci&#243;n en una secci&#243;n
+ <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, en su fichero
+ de configuraci&#243;n principal, es el m&#233;todo recomendado para configurar esto,
+ y los ficheros <code>.htaccess</code> deber&#237;an usarse solamente si no tiene
+ acceso al fichero de configuraci&#243;n principal del servidor. Vea <a href="#when">m&#225;s arriba</a> una explicaci&#243;n de cuando deber&#237;a y cuando no
+ deber&#237;a usar ficheros <code>.htaccess</code>.</p>
+
+ <p>Dicho esto, si todav&#237;a cree que debe usar el fichero
+ <code>.htaccess</code>, podr&#225; ver que una configuraci&#243;n como la que sigue
+ podr&#237;a servirle.</p>
+
+ <p>Contenido del fichero <code>.htaccess</code>:</p>
+
+ <pre class="prettyprint lang-config">AuthType Basic
+AuthName "Password Required"
+AuthUserFile "/www/passwords/password.file"
+AuthGroupFile "/www/passwords/group.file"
+Require group admins</pre>
+
+
+ <p>Tenga en cuenta que <code>AllowOverride AuthConfig</code> debe estar
+ habilitado para que estas directivas tengan alg&#250;n efecto.</p>
+
+ <p>Por favor vea el <a href="auth.html">tutorial de autenticaci&#243;n</a> para
+ una explicaci&#243;n m&#225;s completa de la autenticaci&#243;n y la autorizaci&#243;n.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="ssi" id="ssi">Ejemplo de Server Side Includes</a></h2>
+
+ <p>Otro uso com&#250;n de ficheros <code>.htaccess</code> es activar Server Side
+ Includes para un directorio en particular. Esto puede hacerse
+ con las siguientes directivas de configuraci&#243;n, colocadas en un fichero
+ <code>.htaccess</code> y el directorio deseado:</p>
+
+ <pre class="prettyprint lang-config">Options +Includes
+AddType text/html "shtml"
+AddHandler server-parsed shtml</pre>
+
+
+ <p>Tenga en cuenta que <code>AllowOverride Options</code> y
+ <code>AllowOverride FileInfo</code> deben estar activadas para que estas
+ directivas tengan efecto.</p>
+
+ <p>Por favor vea el <a href="ssi.html">tutorial de SSI</a> para una
+ explicaci&#243;n m&#225;s completa de server-side includes.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="rewrite" id="rewrite">Reglas de Rewrite en ficheros .htaccess</a></h2>
+ <p>Cuando use <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> en
+ ficheros <code>.htaccess</code>, tenga en cuenta que el contexto
+ directorio cambia las cosas un poco. En concreto, las reglas son
+ relativas al directorio actual, en lugar de serlo de la petici&#243;n de URI
+ solicitada originalmente.
+ Considere los siguientes ejemplos:</p>
+
+<pre class="prettyprint lang-config"># En httpd.conf
+RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"
+
+# En .htaccess en el directorio ra&#237;z
+RewriteRule "^images/(.+)\.jpg" "images/$1.png"
+
+# En .htaccess en images/
+RewriteRule "^(.+)\.jpg" "$1.png"</pre>
+
+
+ <p>En un <code>.htaccess</code> en cualquier directorio del DocumentRoot, la
+ barra ("/") inicial se elimina del valor facilitado a <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>, y en el subdirectorio
+ <code>images</code>, se elimina <code>/images/</code> tambi&#233;n de este valor.
+ As&#237;, su expresi&#243;n regular necesita omitir tambi&#233;n esa parte.</p>
+
+ <p>Consulte la <a href="../rewrite/">documentaci&#243;n de mod_rewrite</a> para
+ m&#225;s detalles al usar <code>mod_rewrite</code>.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="cgi" id="cgi">Ejemplo de CGI</a></h2>
+
+ <p>Finalmente, puede que quiera usar un fichero <code>.htaccess</code> para
+ permitir la ejecuci&#243;n de programas CGI en un directorio en particular. Esto
+ se puede implementar con la siguiente configuraci&#243;n:</p>
+
+ <pre class="prettyprint lang-config">Options +ExecCGI
+AddHandler cgi-script "cgi" "pl"</pre>
+
+
+ <p>Alternativamente, si quiere considerar como programas CGI todos los
+ ficheros de un directorio concreto, esto se puede conseguir con la siguiente
+ configuraci&#243;n:</p>
+
+ <pre class="prettyprint lang-config">Options +ExecCGI
+SetHandler cgi-script</pre>
+
+
+ <p>Tenga en cuenta que <code>AllowOverride Options</code> y
+ <code>AllowOverride FileInfo</code> deben estar ambas activadas para que
+ estas directivas tengan efecto.</p>
+
+ <p>Por favor vea el <a href="cgi.html">tutorial CGI</a> para mayor detalle
+ sobre programaci&#243;n y configuraci&#243;n de CGI.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="troubleshoot" id="troubleshoot">Resoluci&#243;n de problemas</a></h2>
+
+ <p>Cuando pone directivas en un fichero <code>.htaccess</code> y no obtiene
+ el efecto deseado hay una serie de cosas que pueden haber ido mal.</p>
+
+ <p>El problema m&#225;s com&#250;n es que <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride
+ </a></code> no est&#225; configurada para que sus directivas puedan surtir
+ efecto. Aseg&#250;rese de que no tiene <code>AllowOverride None</code>
+ configurado para el directorio en cuesti&#243;n. Una buena forma de probar esto
+ es poner "basura" en su fichero <code>.htaccess</code> y recargar la p&#225;gina.
+ Si no se genera un error en el servidor, casi seguro que tiene configurado
+ <code>AllowOverride None</code>.</p>
+
+ <p>Si, por otro lado, obtiene errores de servidor al intentar acceder a
+ documentos, compruebe el log de errores de httpd. Seguramente le indiquen
+ que la directiva en uso en su fichero <code>.htaccess</code> no est&#225;
+ permitida.</p>
+
+ <div class="example"><p><code>
+ [Fri Sep 17 18:43:16 2010] [alert] [client 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex not allowed here
+ </code></p></div>
+
+ <p>Esto indicar&#225; que o bien ha usado una directiva que no se permite nunca
+ en ficheros <code>.htaccess</code>, o que simplementa no tiene
+ <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> configurado
+ a un nivel suficiente para la directiva que ha usado. Consulte la
+ documentaci&#243;n para esa directiva en particular para determinar cual es el
+ caso.</p>
+
+ <p>Alternativamente, puede que le indique que hay un error de sintaxis en
+ el uso de la propia directiva.</p>
+
+ <div class="example"><p><code>
+ [Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
+ </code></p></div>
+
+ <p>En este caso, el mensaje de error deber&#237;a ser espec&#237;fico para el error de
+ sintaxis concreto que ha cometido.</p>
+
+</div></div>
+<div class="bottomlang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/htaccess.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/htaccess.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Portugu&#234;s (Brasil)">&nbsp;pt-br&nbsp;</a></p>
+</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comentarios</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+var comments_shortname = 'httpd';
+var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/htaccess.html';
+(function(w, d) {
+ if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
+ d.write('<div id="comments_thread"><\/div>');
+ var s = d.createElement('script');
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+ (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+ }
+ else {
+ d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
+ }
+})(window, document);
+//--><!]]></script></div><div id="footer">
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los t&#233;rminos de <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
+if (typeof(prettyPrint) !== 'undefined') {
+ prettyPrint();
+}
+//--><!]]></script>
+</body></html> \ No newline at end of file
diff --git a/docs/manual/howto/htaccess.xml.es b/docs/manual/howto/htaccess.xml.es
new file mode 100644
index 0000000000..0e25a9525b
--- /dev/null
+++ b/docs/manual/howto/htaccess.xml.es
@@ -0,0 +1,475 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?>
+<!-- English Revision: 1741841 -->
+<!-- Spanish translation : Daniel Ferradal -->
+<!-- Reviewed by Luis Joaquin Gil de Bernabé Pfeiffer -->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="htaccess.xml.meta">
+<parentdocument href="./">How-To / Tutoriales</parentdocument>
+
+<title>Tutorial del Servidor Apache HTTP: Ficheros .htaccess</title>
+
+<summary>
+ <p>Los ficheros <code>.htaccess</code> facilitan una forma de realizar
+ cambios en la configuración en contexto directorio.</p>
+</summary>
+
+<section id="related"><title>Ficheros .htaccess</title>
+ <related>
+ <modulelist>
+ <module>core</module>
+ <module>mod_authn_file</module>
+ <module>mod_authz_groupfile</module>
+ <module>mod_cgi</module>
+ <module>mod_include</module>
+ <module>mod_mime</module>
+ </modulelist>
+
+ <directivelist>
+ <directive module="core">AccessFileName</directive>
+ <directive module="core">AllowOverride</directive>
+ <directive module="core">Options</directive>
+ <directive module="mod_mime">AddHandler</directive>
+ <directive module="core">SetHandler</directive>
+ <directive module="mod_authn_core">AuthType</directive>
+ <directive module="mod_authn_core">AuthName</directive>
+ <directive module="mod_authn_file">AuthUserFile</directive>
+ <directive module="mod_authz_groupfile">AuthGroupFile</directive>
+ <directive module="mod_authz_core">Require</directive>
+ </directivelist>
+
+ </related>
+
+ <note>Debería evitar usar ficheros <code>.htaccess</code> completamente si
+ tiene acceso al fichero de configuración principal de httpd. Usar ficheros
+ <code>.htaccess</code> ralentiza su servidor Apache http. Cualquier
+ directiva que pueda incluir en un fichero <code>.htaccess</code>
+ estará mejor configurada dentro de una sección
+ <directive module="core">Directory</directive>, tendrá el mismo efecto y
+ mejor rendimiento.</note>
+</section>
+
+<section id="what">
+<title>Qué son/Cómo usarlos</title>
+
+ <p>Los ficheros <code>.htaccess</code> (o "ficheros de configuración
+ distribuida") facilitan una forma de realizar cambios en la configuración
+ en contexto directorio. Un fichero, que contiene una o más directivas, se
+ coloca en un documento específico de un directorio, y estas directivas
+ aplican a ese directorio y todos sus subdirectorios.</p>
+
+ <note><title>Nota:</title>
+ <p>Si quiere llamar a su fichero <code>.htaccess</code> de otra manera,
+ puede cambiar el nombre del fichero usando la directiva <directive
+ module="core">AccessFileName</directive>. Por ejemplo, si usted prefiere
+ llamar al fichero <code>.config</code>, entonces puede poner lo siguiente
+ en el fichero de configuración de su servidor:</p>
+
+ <highlight language="config">
+AccessFileName ".config"
+ </highlight>
+ </note>
+
+ <p>Generalmente, los ficheros <code>.htaccess</code> usan la misma sintáxis
+ que los <a href="../configuring.html#syntax">ficheros de la configuración
+ principal</a>. Lo que puede utilizar en estos ficheros lo determina la
+ directiva <directive module="core">AllowOverride</directive>. Esta directiva
+ especifica, en categorías, qué directivas tendrán efecto si se encuentran en
+ un fichero <code>.htaccess</code>. Si se permite una directiva en un fichero
+ <code>.htaccess</code>, la documentación para esa directiva contendrá una
+ sección Override, especificando qué valor debe ir en
+ <directive module="core">AllowOverride</directive> para que se permita esa
+ directiva.</p>
+
+ <p>Por ejemplo, si busca en la documentación la directiva <directive
+ module="core">AddDefaultCharset</directive>, encontrará que se permite en
+ ficheros <code>.htaccess</code>. (Vea la línea de Contexto en el sumario de
+ la directiva.) La línea <a
+ href="../mod/directive-dict.html#Context">Override</a> muestra
+ <code>FileInfo</code>. De este modo, debe tener al menos
+ <code>AllowOverride FileInfo</code> para que esta directiva se aplique en
+ ficheros <code>.htaccess</code>.</p>
+
+ <example><title>Ejemplo:</title>
+ <table>
+ <tr>
+ <td><a
+ href="../mod/directive-dict.html#Context">Context:</a></td>
+ <td>server config, virtual host, directory, .htaccess</td>
+ </tr>
+
+ <tr>
+ <td><a
+ href="../mod/directive-dict.html#Override">Override:</a></td>
+ <td>FileInfo</td>
+ </tr>
+ </table>
+ </example>
+
+ <p>Si no está seguro de cuándo, una directiva en concreto, se puede usar en un
+ fichero <code>.htaccess</code>, consulte la documentación para esa directiva,
+ y compruebe la línea Context buscando ".htaccess".</p>
+ </section>
+
+ <section id="when"><title>Cuando (no) usar ficheros .htaccess</title>
+
+ <p>Generalmente, solo debería usar ficheros <code>.htaccess</code> cuando no
+ tiene acceso al fichero principal de configuración del servidor. Hay, por
+ ejemplo, una creencia errónea de que la autenticación de usuario debería
+ hacerse siempre dentro de ficheros <code>.htaccess</code>, y, más recientemente, otra creencia errónea de que las directivas de
+ <module>mod_rewrite</module> deben ir en ficheros <code>.htaccess</code>.
+ Esto sencillamente no es el caso. Puede poner las configuraciones de
+ autenticación de usuario en la configuración principal del servidor, y esto
+ es de hecho, el método preferido de configurar Apache. Del mismo modo, las
+ directivas <code>mod_rewrite</code> funcionan mejor, en muchos sentidos, en
+ el fichero de configuración principal del servidor.</p>
+
+ <p>Los ficheros <code>.htaccess</code> deberían usarse cuando su proveedor
+ de contenidos le permite hacer modificaciones de configuración
+ en contexto directorio, pero usted no tiene acceso de root en el servidor.
+ En el caso de que el administrador no esté dispuesto a hacer cambios
+ frecuentes en la configuración, puede que sea necesario permitir a usuarios
+ individuales realizar estos cambios de configuración en ficheros
+ <code>.htaccess</code> por ellos mismos. Lo cual ocurre a menudo, por
+ ejemplo, en casos donde los ISP están albergando múltiples sitios web de
+ usuario en una sola máquina, y quieren que sus usuarios tengan la
+ posibilidad de modificar sus configuraciones.</p>
+
+ <p>Aun así, generalmente, el uso de ficheros <code>.htaccess</code> debería
+ evitarse cuando sea posible. Cualquier configuración que consideraría poner
+ en un fichero <code>.htaccess</code>, puede usarse con la misma efectividad
+ en una sección <directive module="core"
+ type="section">Directory</directive> en el fichero de configuración
+ del servidor.</p>
+
+ <p>Hay dos razones para evitar el uso de ficheros <code>.htaccess</code>.</p>
+
+ <p>La primera es el rendimiento. Cuando <directive
+ module="core">AllowOverride</directive>
+ está configurado para permitir el uso de ficheros <code>.htaccess</code>,
+ httpd buscará ficheros <code>.htaccess</code> en cada directorio. Así,
+ permitiendo ficheros <code>.htaccess</code> provoca una pérdida de
+ rendimiento, ¡incluso aunque no los use! Además, los ficheros
+ <code>.htaccess</code> se cargan cada vez que se solicita un documento.</p>
+
+ <p>Además tenga en cuenta que httpd debe buscar ficheros
+ <code>.htaccess</code> en todos los directorios de mayor jerarquía,
+ para poder terner la lista completa de directivas que debe aplicar. (Vea
+ la sección sobre <a href="#how">Cómo se aplican las directivas</a>.) Así, si
+ se solicita un fichero de un directorio <code>/www/htdocs/example</code>,
+ httpd debe buscar los siguientes ficheros:</p>
+
+ <example>
+ /.htaccess<br />
+ /www/.htaccess<br />
+ /www/htdocs/.htaccess<br />
+ /www/htdocs/example/.htaccess
+ </example>
+
+ <p>De esta manera, por cada acceso a un fichero de ese directorio, hay 4
+ accesos adicionales al sistema de ficheros, incluso si ninguno de esos
+ ficheros está presente. (Tenga en cuenta que este caso solo se daría si los
+ ficheros <code>.htaccess</code> están activados en <code>/</code>, que
+ generalmente no es el caso.).</p>
+
+ <p>En el caso de las directivas <directive
+ module="mod_rewrite">RewriteRule</directive>, en el contexto de
+ <code>.htaccess</code> estas expresiones regulares deben recompilarse con
+ cada solicitud a ese directorio, cuando en el contexto de configuración del
+ servidor solo se compilan una vez y se cachean. Adicionalmente, las reglas
+ en sí mismas son más complicadas, puesto que uno debe sortear las
+ restricciones que vienen acompañadas del contexto directorio y
+ <code>mod_rewrite</code>. Consulte la <a
+ href="../rewrite/intro.html#htaccess">Guía de Rewrite</a> para un mayor
+ detalle sobre este tema.</p>
+
+ <p>La segunda consideración es de seguridad. Estará permitiendo que usuarios
+ modifiquen la configuración del servidor, lo cual puede dar lugar a cambios sobre los que usted no tendrá ningún control. Medite profundamente si debe
+ dar a sus usuarios ese privilegio. Además tenga en cuenta que dar a los usuarios menos privilegios de los que necesitan dará lugar a más peticiones
+ de soporte. Asegúrese de que le indica a sus usuarios claramente el nivel de privilegios que les está dando. Especificando exactamente cómo ha
+ configurado <directive module="core">AllowOverride</directive>, e invíteles
+ a revisar la documentación relacionada, lo cual le ahorrará
+ bastantes confusiones más adelante.</p>
+
+ <p>Tenga en cuenta que esto es equivalente por completo a poner un fichero
+ <code>.htaccess</code> en un directorio <code>/www/htdocs/example</code>
+ con una directiva, y poner la misma directiva en una sección
+ Directory <code>&lt;Directory "/www/htdocs/example"&gt;</code> en su
+ configuración principal del servidor:</p>
+
+ <p>Fichero <code>.htaccess</code> en <code>/www/htdocs/example</code>:</p>
+
+ <example><title>Contenido de fichero .htaccess en
+ <code>/www/htdocs/example</code></title>
+ <highlight language="config">
+AddType text/example ".exm"
+ </highlight>
+ </example>
+
+ <example><title>Sección de su fichero <code>httpd.conf</code></title>
+ <highlight language="config">
+&lt;Directory "/www/htdocs/example"&gt;
+ AddType text/example ".exm"
+&lt;/Directory&gt;
+ </highlight>
+ </example>
+
+ <p>Aun así, poniendo ésta en el fichero de configuración dará como resultado
+ una menor pérdida de rendimiento, y como la configuración se carga una vez
+ cuando el httpd arranca, en lugar de cada vez que se solicita un fichero.</p>
+
+ <p>El uso de ficheros <code>.htaccess</code> puede desactivarse por completo
+ configurando la directiva <directive module="core">AllowOverride</directive>
+ a <code>none</code>:</p>
+
+ <highlight language="config">
+AllowOverride None
+ </highlight>
+</section>
+
+<section id="how"><title>How directives are applied</title>
+
+ <p>Las directivas de configuración que se encuentran en el fichero
+ <code>.htaccess</code> se aplican al directorio en el que el fichero
+ <code>.htaccess</code> se encuentra, y a todos sus subdirectorios. Sin
+ embargo, es importante recordar que puede haber otros ficheros
+ <code>.htaccess</code> en directorios previos. Las directivas se aplican en
+ el orden en el que se encuentran. Por lo tanto, un fichero
+ <code>.htaccess</code> puede sobrescribir directivas que se encuentran
+ en ficheros <code>.htaccess</code> que se encuentran en directorios previos
+ del árbol de directorios. Y estos, en cambio, pueden haber sobrescrito
+ directivas que se encontraban más arriba, o en el fichero principal de
+ configuración del servidor mismo.</p>
+
+ <p>Ejemplo:</p>
+
+ <p>En el directorio <code>/www/htdocs/example1</code> tenemos un fichero
+ <code>.htaccess</code> que contiene lo siguiente:</p>
+
+ <highlight language="config">
+Options +ExecCGI
+ </highlight>
+
+ <p>(Nota: debe terner "<code>AllowOverride Options</code>" configurado para
+ permitir el uso de la directiva "<directive
+ module="core">Options</directive>" en ficheros
+ <code>.htaccess</code> files.)</p>
+
+ <p>En el directorio <code>/www/htdocs/example1/example2</code> tenemos un
+ fichero <code>.htaccess</code> que contiene:</p>
+
+ <highlight language="config">
+Options Includes
+ </highlight>
+
+ <p>Por este segundo fichero <code>.htaccess</code>, en el directorio
+ <code>/www/htdocs/example1/example2</code>, la ejecución de CGI execution no
+ está permitida, porque solo se ha definido <code>Options Includes</code>,
+ que sobrescribe completamente una configuración previa que se pudiera haber
+ definido.</p>
+
+ <section id="merge"><title>Incorporando el .htaccess en los ficheros de
+ configuración principal</title>
+
+ <p>Como se ha comentado en la documentación en las <a
+ href="../sections.html">Secciones de Configuración</a>, los ficheros
+ <code>.htaccess</code> pueden sobrescribir las secciones <directive
+ type="section" module="core">Directory</directive> por el directorio
+ correspondiente, pero se sobrescribirán por otros tipos de secciones de
+ configuración de los ficheros de configuración principal. Este hecho se
+ puede usar para forzar ciertas configuraciones, incluso en presencia
+ de una configuración laxa de
+ <directive module="core">AllowOverride</directive>. Por ejemplo, para
+ prevenir la ejecución de un script mientras se permite cualquier otra cosa
+ en <code>.htaccess</code> puede usar:</p>
+
+ <highlight language="config">
+&lt;Directory "/www/htdocs"&gt;
+ AllowOverride All
+&lt;/Directory&gt;
+
+&lt;Location "/"&gt;
+ Options +IncludesNoExec -ExecCGI
+&lt;/Location&gt;
+ </highlight>
+
+ <note>Este ejemplo asume que su <directive
+ module="core">DocumentRoot</directive> es <code>/www/htdocs</code>.</note>
+</section>
+
+</section>
+
+<section id="auth"><title>Ejemplo de Autenticación</title>
+
+ <p>Si saltó directamente a esta parte del documento para averiguar como
+ hacer la autenticación, es important que tenga en cuenta una cosa. Hay una
+ creencia errónea de que necesita usar ficheros <code>.htaccess</code> para
+ configurar autenticación con contraseña. Este no es el caso. Colocar las
+ directivas de autenticación en una sección
+ <directive module="core" type="section">Directory</directive>, en su fichero
+ de configuración principal, es el método recomendado para configurar esto,
+ y los ficheros <code>.htaccess</code> deberían usarse solamente si no tiene
+ acceso al fichero de configuración principal del servidor. Vea <a
+ href="#when">más arriba</a> una explicación de cuando debería y cuando no
+ debería usar ficheros <code>.htaccess</code>.</p>
+
+ <p>Dicho esto, si todavía cree que debe usar el fichero
+ <code>.htaccess</code>, podrá ver que una configuración como la que sigue
+ podría servirle.</p>
+
+ <p>Contenido del fichero <code>.htaccess</code>:</p>
+
+ <highlight language="config">
+AuthType Basic
+AuthName "Password Required"
+AuthUserFile "/www/passwords/password.file"
+AuthGroupFile "/www/passwords/group.file"
+Require group admins
+ </highlight>
+
+ <p>Tenga en cuenta que <code>AllowOverride AuthConfig</code> debe estar
+ habilitado para que estas directivas tengan algún efecto.</p>
+
+ <p>Por favor vea el <a href="auth.html">tutorial de autenticación</a> para
+ una explicación más completa de la autenticación y la autorización.</p>
+</section>
+
+<section id="ssi"><title>Ejemplo de Server Side Includes</title>
+
+ <p>Otro uso común de ficheros <code>.htaccess</code> es activar Server Side
+ Includes para un directorio en particular. Esto puede hacerse
+ con las siguientes directivas de configuración, colocadas en un fichero
+ <code>.htaccess</code> y el directorio deseado:</p>
+
+ <highlight language="config">
+Options +Includes
+AddType text/html "shtml"
+AddHandler server-parsed shtml
+ </highlight>
+
+ <p>Tenga en cuenta que <code>AllowOverride Options</code> y
+ <code>AllowOverride FileInfo</code> deben estar activadas para que estas
+ directivas tengan efecto.</p>
+
+ <p>Por favor vea el <a href="ssi.html">tutorial de SSI</a> para una
+ explicación más completa de server-side includes.</p>
+</section>
+
+<section id="rewrite"><title>Reglas de Rewrite en ficheros .htaccess</title>
+ <p>Cuando use <directive module="mod_rewrite">RewriteRule</directive> en
+ ficheros <code>.htaccess</code>, tenga en cuenta que el contexto
+ directorio cambia las cosas un poco. En concreto, las reglas son
+ relativas al directorio actual, en lugar de serlo de la petición de URI
+ solicitada originalmente.
+ Considere los siguientes ejemplos:</p>
+
+<highlight language="config">
+# En httpd.conf
+RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"
+
+# En .htaccess en el directorio raíz
+RewriteRule "^images/(.+)\.jpg" "images/$1.png"
+
+# En .htaccess en images/
+RewriteRule "^(.+)\.jpg" "$1.png"
+</highlight>
+
+ <p>En un <code>.htaccess</code> en cualquier directorio del DocumentRoot, la
+ barra ("/") inicial se elimina del valor facilitado a <directive
+ module="mod_rewrite">RewriteRule</directive>, y en el subdirectorio
+ <code>images</code>, se elimina <code>/images/</code> también de este valor.
+ Así, su expresión regular necesita omitir también esa parte.</p>
+
+ <p>Consulte la <a href="../rewrite/">documentación de mod_rewrite</a> para
+ más detalles al usar <code>mod_rewrite</code>.</p>
+
+</section>
+
+<section id="cgi"><title>Ejemplo de CGI</title>
+
+ <p>Finalmente, puede que quiera usar un fichero <code>.htaccess</code> para
+ permitir la ejecución de programas CGI en un directorio en particular. Esto
+ se puede implementar con la siguiente configuración:</p>
+
+ <highlight language="config">
+Options +ExecCGI
+AddHandler cgi-script "cgi" "pl"
+ </highlight>
+
+ <p>Alternativamente, si quiere considerar como programas CGI todos los
+ ficheros de un directorio concreto, esto se puede conseguir con la siguiente
+ configuración:</p>
+
+ <highlight language="config">
+Options +ExecCGI
+SetHandler cgi-script
+ </highlight>
+
+ <p>Tenga en cuenta que <code>AllowOverride Options</code> y
+ <code>AllowOverride FileInfo</code> deben estar ambas activadas para que
+ estas directivas tengan efecto.</p>
+
+ <p>Por favor vea el <a href="cgi.html">tutorial CGI</a> para mayor detalle
+ sobre programación y configuración de CGI.</p>
+
+</section>
+
+<section id="troubleshoot"><title>Resolución de problemas</title>
+
+ <p>Cuando pone directivas en un fichero <code>.htaccess</code> y no obtiene
+ el efecto deseado hay una serie de cosas que pueden haber ido mal.</p>
+
+ <p>El problema más común es que <directive module="core">AllowOverride
+ </directive> no está configurada para que sus directivas puedan surtir
+ efecto. Asegúrese de que no tiene <code>AllowOverride None</code>
+ configurado para el directorio en cuestión. Una buena forma de probar esto
+ es poner "basura" en su fichero <code>.htaccess</code> y recargar la página.
+ Si no se genera un error en el servidor, casi seguro que tiene configurado
+ <code>AllowOverride None</code>.</p>
+
+ <p>Si, por otro lado, obtiene errores de servidor al intentar acceder a
+ documentos, compruebe el log de errores de httpd. Seguramente le indiquen
+ que la directiva en uso en su fichero <code>.htaccess</code> no está
+ permitida.</p>
+
+ <example>
+ [Fri Sep 17 18:43:16 2010] [alert] [client 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex not allowed here
+ </example>
+
+ <p>Esto indicará que o bien ha usado una directiva que no se permite nunca
+ en ficheros <code>.htaccess</code>, o que simplementa no tiene
+ <directive module="core">AllowOverride</directive> configurado
+ a un nivel suficiente para la directiva que ha usado. Consulte la
+ documentación para esa directiva en particular para determinar cual es el
+ caso.</p>
+
+ <p>Alternativamente, puede que le indique que hay un error de sintaxis en
+ el uso de la propia directiva.</p>
+
+ <example>
+ [Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
+ </example>
+
+ <p>En este caso, el mensaje de error debería ser específico para el error de
+ sintaxis concreto que ha cometido.</p>
+
+</section>
+
+</manualpage>
diff --git a/docs/manual/howto/htaccess.xml.meta b/docs/manual/howto/htaccess.xml.meta
index a962e7243c..f230926987 100644
--- a/docs/manual/howto/htaccess.xml.meta
+++ b/docs/manual/howto/htaccess.xml.meta
@@ -8,6 +8,7 @@
<variants>
<variant>en</variant>
+ <variant>es</variant>
<variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
diff --git a/docs/manual/howto/http2.html.es b/docs/manual/howto/http2.html.es
new file mode 100644
index 0000000000..c85ca8e28c
--- /dev/null
+++ b/docs/manual/howto/http2.html.es
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
+<!--
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ This file is generated from xml source: DO NOT EDIT
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ -->
+<title>Gu&#237;a HTTP/2 - Servidor Apache HTTP Versi&#243;n 2.4</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
+<script src="../style/scripts/prettify.min.js" type="text/javascript">
+</script>
+
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p>
+<p class="apache">Versi&#243;n 2.4 del Servidor HTTP Apache</p>
+<img alt="" src="../images/feather.png" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentaci&#243;n</a> &gt; <a href="../">Versi&#243;n 2.4</a> &gt; <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Gu&#237;a HTTP/2</h1>
+<div class="toplang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/http2.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/http2.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/http2.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a></p>
+</div>
+
+ <p>Esta es la gu&#237;a para configurar HTTP/2 en Apache httpd. &#201;sta
+ caracter&#237;stica es <em>experimental</em> as&#237; que es de esperar que algunas
+ directivas e interfaces cambien con nuevas versiones.
+ </p>
+ </div>
+<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#protocol">El protocolo HTTP/2</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#implementation">HTTP/2 en Apache httpd</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#building">Compilar httpd con soporte HTTP/2</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#basic-config">Configuraci&#243;n b&#225;sica</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#mpm-config">Configuraci&#243;n MPM</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#clients">Clientes</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#tools">Herramientas &#250;tiles para depurar HTTP/2</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#push">Server Push</a></li>
+</ul><h3>Consulte tambi&#233;n</h3><ul class="seealso"><li><a href="../mod/mod_http2.html">mod_http2</a></li><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="protocol" id="protocol">El protocolo HTTP/2</a></h2>
+
+
+ <p>HTTP/2 es la evoluci&#243;n del protocolo de la capa de aplicaci&#243;n con m&#225;s
+ &#233;xito, HTTP. Se centra en hacer un uso m&#225;s eficiente de los recursos de red. No cambia la caracter&#237;stica fundamental de HTTP, la sem&#225;ntica. Todav&#237;a hay solicitudes, respuestas, cabeceras y todo los elementos t&#237;picos de HTTP/1. As&#237; que, si ya conoce HTTP/1, tambi&#233;n conoce el 95% de HTTP/2.</p>
+
+ <p>Se ha escrito mucho sobre HTTP/2 y de c&#243;mo funciona. La norma m&#225;s
+ est&#225;ndar es, por supuesto, su
+ <a href="https://tools.ietf.org/html/rfc7540">RFC 7540</a>
+ (<a href="http://httpwg.org/specs/rfc7540.html"> tambi&#233;n disponible en un
+ formato m&#225;s legible, YMMV</a>). As&#237; que, ah&#237; encontrar&#225; toda la especificaci&#243;n del protocolo.</p>
+
+ <p>Pero, como con todos los RFC, no es ideal como primera lectura. Es mejor
+ entender primero <em>qu&#233;</em> se quiere hacer y despu&#233;s leer el RFC sobre
+ <em>c&#243;mo</em> hacerlo. Un documento mucho mejor con el que empezar es
+ <a href="https://daniel.haxx.se/http2/">http2 explicado</a>
+ por Daniel Stenberg, el autor de <a href="https://curl.haxx.se">curl</a>.
+ &#161;Tambi&#233;n est&#225; disponible cada vez en un mayor n&#250;mero lenguajes!</p>
+
+ <p>Si le parece demasiado largo, o no lo ha leido, hay algunos t&#233;rminos
+ y elementos a tener en cuenta cuando lea este documento:</p>
+ <ul>
+ <li>HTTP/2 es un <strong>protocolo binario</strong>, al contrario que HTTP 1.1 que es texto plano. La intenci&#243;n para HTTP 1.1 es que sea legible (por ejemplo capturando el tr&#225;fico de red) mientras que para HTTP/2 no. M&#225;s informaci&#243;n en el FAQ oficial <a href="https://http2.github.io/faq/#why-is-http2-binary">&#191;Por qu&#233; es binario HTTP/2?</a></li>
+
+ <li><strong>h2</strong> es HTTP/2 sobre TLS (negociaci&#243;n de protocolo a trav&#233;s de ALPN).</li>
+
+ <li><strong>h2c</strong> es HTTP/2 sobre TCP.</li>
+
+ <li>Un <strong>frame</strong> es la unidad m&#225;s peque&#241;a de comunicaci&#243;n dentro de una conexi&#243;n HTTP/2, que consiste en una cabecera y una secuencia de octetos de longitud variable estructurada de acuerdo con el tipo de frame. M&#225;s informaci&#243;n en la documentaci&#243;n oficial <a href="http://httpwg.org/specs/rfc7540.html#FramingLayer">Secci&#243;n de Capa de Frame</a>.</li>
+
+ <li>Un <strong>stream</strong> es un flujo bidireccional de frames dentro de una conexi&#243;n HTTP/2. El concepto correspondiente en HTTP 1.1 es un intercambio de mensajes de solicitud/respuesta. M&#225;s informaci&#243;n en la documentaci&#243;n oficial <a href="http://httpwg.org/specs/rfc7540.html#StreamsLayer">Secci&#243;n Capa de Stream</a>.</li>
+
+ <li>HTTP/2 es capaz de llevar <strong>m&#250;ltiples streams</strong> de datos sobre la misma conexi&#243;n TCP, evitando la cl&#225;sica solicitud lenta "head-of-line blocking" de HTTP 1.1 y evitando generar m&#250;ltiples conexiones TCP para cada solicitud/respuesta (KeepAlive parche&#243; el problema en HTTP 1.1 pero no lo resolvi&#243; completamente).</li>
+ </ul>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="implementation" id="implementation">HTTP/2 en Apache httpd</a></h2>
+
+ <p>El protocolo HTTP/2 se implementa con su propio m&#243;dulo httpd, llamado acertadamente <a href="../mod/mod_http2.html">mod_http2</a>. Incluye el set completo de caracter&#237;sticas descritas por el RFC 7540 y soporta HTTP/2 sobre texto plano (http:), as&#237; como conexiones seguras (https:). La variante de texto plano se llama '<code>h2c</code>', la segura '<code>h2</code>'. Para <code>h2c</code> permite el modo <em>direct</em>
+ y el <code>Upgrade:</code> a trav&#233;s de una solicitud inicial HTTP/1.</p>
+
+ <p>Una caracter&#237;stica de HTTP/2 que ofrece capacidades nuevas para desarrolladores de web es <a href="#push">Server Push</a>. Vea esa secci&#243;n para saber como su aplicaci&#243;n web puede hacer uso de ella.</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="building" id="building">Compilar httpd con soporte HTTP/2</a></h2>
+
+ <p><a href="../mod/mod_http2.html">mod_http2</a> usa la librer&#237;a <a href="https://nghttp2.org">nghttp2</a>
+ como su implementaci&#243;n base. Para compilar <code>mod_http2</code> necesita al menos la versi&#243;n 1.2.1 de <code>libnghttp2</code> instalada en su sistema.</p>
+
+ <p>Cuando usted ejecuta <code>./configure</code> en el c&#243;digo fuente de Apache HTTPD, necesita indicarle '<code>--enable-http2</code>' como una opci&#243;n adicional para activar la compilaci&#243;n de este m&#243;dulo. Si su <code>libnghttp2</code> est&#225; ubicado en una ruta no habitual (cualquiera que sea en su sistema operativo), puede indicar su ubicaci&#243;n con '<code>--with-nghttp2=&lt;path&gt;</code>' para <code>./configure</code>.</p>
+
+ <p>Aunque puede que eso sirva para la mayor&#237;a, habr&#225; quien prefiera un <code>nghttp2</code> compilado est&#225;ticamente para este m&#243;dulo. Para ellos existe la opci&#243;n <code>--enable-nghttp2-staticlib-deps</code>. Funciona de manera muy similar a como uno debe enlazar openssl est&#225;ticamente para mod_ssl.</p>
+
+ <p>Hablando de SSL, necesita estar al tanto de que la mayor&#237;a de los navegadores hablan HTTP/2 solo con URLs <code>https:</code>. As&#237; que necesita un servidor con soporte SSL. Pero no solo eso, necesitar&#225; una librer&#237;a SSL que de soporte a la extensi&#243;n <code>ALPN</code>. Si usa OpenSSL, necesita al menos la versi&#243;n 1.0.2.</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="basic-config" id="basic-config">Configuraci&#243;n b&#225;sica</a></h2>
+
+
+ <p>Cuando tiene un <code>httpd</code> compilado con <code>mod_http2</code> necesita una configuraci&#243;n b&#225;sica para activarlo. Lo primero, como con cualquier otro m&#243;dulo de Apache, es que necesita cargarlo:</p>
+
+ <pre class="prettyprint lang-config">LoadModule http2_module modules/mod_http2.so</pre>
+
+
+ <p>La segunda directiva que necesita a&#241;adir a la configuraci&#243;n de su servidor es:</p>
+
+ <pre class="prettyprint lang-config">Protocols h2 http/1.1</pre>
+
+
+ <p>Esto permite h2, la variante segura, para ser el protocolo preferido de las conexiones en su servidor. Cuando quiera habilitar todas las variantes de HTTP/2, entonces simplemente configure:</p>
+
+ <pre class="prettyprint lang-config">Protocols h2 h2c http/1.1</pre>
+
+
+ <p>Dependiendo de d&#243;nde pone esta directiva, afecta a todas las conexiones o solo a las de ciertos host virtuales. La puede anidar, como en:</p>
+
+ <pre class="prettyprint lang-config">Protocols http/1.1
+&lt;VirtualHost ...&gt;
+ ServerName test.example.org
+ Protocols h2 http/1.1
+&lt;/VirtualHost&gt;</pre>
+
+
+ <p>Esto solo permite HTTP/1, excepto conexiones SSL hacia <code>test.example.org</code> que ofrecen HTTP/2.</p>
+
+ <div class="note"><h3>Escoger un SSLCipherSuite seguro</h3>
+ <p>Es necesario configurar <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code> con una suite segura de cifrado TLS. La versi&#243;n actual de mod_http2 no fuerza ning&#250;n cifrado pero la mayor&#237;a de los clientes si lo hacen. Encaminar un navegador hacia un servidor con <code>h2</code> activado con una suite inapropiada de cifrados forzar&#225; al navegador a rehusar e intentar conectar por HTTP 1.1. Esto es un error com&#250;n cuando se configura httpd con HTTP/2 por primera vez, &#161;as&#237; que por favor tenga en cuenta que debe evitar largas sesiones de depuraci&#243;n! Si quiere estar seguro de la suite de cifrados que escoja, por favor evite los listados en la <a href="http://httpwg.org/specs/rfc7540.html#BadCipherSuites">Lista Negra de TLS para HTTP/2</a>.</p>
+ </div>
+
+ <p>El orden de los protocolos mencionados tambi&#233;n es relevante. Por defecto, el primero es el protocolo preferido. Cuando un cliente ofrece m&#250;ltiples opciones, la que est&#233; m&#225;s a la izquierda ser&#225; la escogida. En</p>
+ <pre class="prettyprint lang-config">Protocols http/1.1 h2</pre>
+
+
+ <p>el protocolo preferido es HTTP/1 y siempre ser&#225; seleccionado a menos que el cliente <em>s&#243;lo</em> soporte h2. Puesto que queremos hablar HTTP/2 con clientes que lo soporten, el orden correcto es:</p>
+
+ <pre class="prettyprint lang-config">Protocols h2 h2c http/1.1</pre>
+
+
+ <p>Hay algo m&#225;s respecto al orden: el cliente tambi&#233;n tiene sus propias preferencias. Si quiere, puede configurar su servidor para seleccionar el protocolo preferido por el cliente:</p>
+
+ <pre class="prettyprint lang-config">ProtocolsHonorOrder Off</pre>
+
+
+ <p>Hace que el orden en que <em>usted</em> escribi&#243; los Protocols sea irrelevante y s&#243;lo el orden de preferencia del cliente ser&#225; decisorio.</p>
+
+ <p>Una &#250;ltima cosa: cuando usted configura los protocolos no se comprueba si son correctos o est&#225;n bien escritos. Puede mencionar protocolos que no existen, as&#237; que no hay necesidad de proteger <code>Protocols</code> con ning&#250;n <code>IfModule</code> de comprobaci&#243;n.</p>
+
+ <p>Para m&#225;s consejos avanzados de configuraci&#243;n, vea la <a href="../mod/mod_http2.html#dimensioning">
+ secci&#243;n de m&#243;dulos sobre dimensionamiento</a> y <a href="../mod/mod_http2.html#misdirected">
+ como gestionar multiples hosts con el mismo certificado</a>.</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="mpm-config" id="mpm-config">Configuraci&#243;n MPM</a></h2>
+
+
+ <p>HTTP/2 est&#225; soportado en todos los m&#243;dulos de multi-proceso que se ofrecen con httpd. Aun as&#237;, si usa el mpm <code>prefork</code>, habr&#225; restricciones severas.</p>
+
+ <p>En <code>prefork</code>, <code>mod_http2</code> solo procesar&#225; una solicitud cada vez por conexi&#243;n. Pero los clientes, como los navegadores, enviar&#225;n muchas solicitudes al mismo tiempo. Si una de ellas tarda mucho en procesarse (o hace un sondeo que dura m&#225;s de la cuenta), las otras solicitudes se quedar&#225;n atascadas.</p>
+
+ <p><code>mod_http2</code> no evitar&#225; este l&#237;mite por defecto. El motivo es que <code>prefork</code> hoy en d&#237;a solo se escoge si ejecuta motores de proceso que no est&#225;n preparados para multi-hilo, p.ej. fallar&#225; con m&#225;s de una solicitud.</p>
+
+ <p>Si su configuraci&#243;n lo soporta, hoy en d&#237;a <code>event</code> es el mejor mpm que puede usar.</p>
+
+ <p>Si realmente est&#225; obligado a usar <code>prefork</code> y quiere multiples solicitudes, puede configurar la directiva <code class="directive"><a href="../mod/mod_http2.html#h2minworkers">H2MinWorkers</a></code> para hacerlo posible. Sin embargo, si esto falla, es bajo su cuenta y riesgo.</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="clients" id="clients">Clientes</a></h2>
+
+
+ <p>Casi todos los navegadores modernos dan soporte a HTTP/2, pero solo en conexiones SSL: Firefox (v43), Chrome (v45), Safari (since v9), iOS Safari (v9), Opera (v35), Chrome para Android (v49) e Internet Explorer (v11 en Windows10) (<a href="http://caniuse.com/#search=http2">Fuente</a>).</p>
+
+ <p>Otros clientes, as&#237; c&#243;mo otros servidores, est&#225;n listados en la
+ <a href="https://github.com/http2/http2-spec/wiki/Implementations">wiki de Implementaciones</a>, entre ellos, implementaciones para c, c++, common lisp, dart, erlang, haskell, java, nodejs, php, python, perl, ruby, rust, scala y swift.</p>
+
+ <p>Muchos de las implementaciones de clientes que no son navegadores soportan HTTP/2 sobre texto plano, h2c. La m&#225;s vers&#225;til es <a href="https://curl.haxx.se">curl</a>.</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="tools" id="tools">Herramientas &#250;tiles para depurar HTTP/2</a></h2>
+
+
+ <p>La primera herramienta a mencionar es por supuesto <a href="https://curl.haxx.se">curl</a>. Por favor aseg&#250;rese de que su versi&#243;n soporta HTTP/2 comprobando sus <code>Caracter&#237;sticas</code>:</p>
+ <pre class="prettyprint lang-config"> $ curl -V
+ curl 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4
+ Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...]
+ Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP <strong>HTTP2</strong>
+ </pre>
+
+ <div class="note"><h3>Notas sobre Mac OS homebrew</h3>
+ brew install curl --with-openssl --with-nghttp2
+ </div>
+ <p>Y para una inspecci&#243;n en gran profundidad <a href="https://wiki.wireshark.org/HTTP2">wireshark</a>.</p>
+ <p>El paquete <a href="https://nghttp2.org">nghttp2</a> tambi&#233;n incluye clientes, tales como:</p>
+ <ul>
+ <li><a href="https://nghttp2.org/documentation/nghttp.1.html">nghttp
+ </a> - util para visualizar la frames de HTTP/2 y tener una mejor idea de como funciona el protocolo.</li>
+ <li><a href="https://nghttp2.org/documentation/h2load-howto.html">h2load</a> - &#250;til para hacer un stress-test de su servidor.</li>
+ </ul>
+
+ <p>Chrome ofrece logs detallados de HTTP/2 en sus conexiones a trav&#233;s de la <a href="chrome://net-internals/#http2">p&#225;gina especial de net-internals</a>. Tambi&#233;n hay una extensi&#243;n interesante para <a href="https://chrome.google.com/webstore/detail/http2-and-spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin?hl=en">Chrome</a> y <a href="https://addons.mozilla.org/en-us/firefox/addon/spdy-indicator/">Firefox</a> con la que visualizar cuando su navegador usa HTTP/2.</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="push" id="push">Server Push</a></h2>
+
+
+ <p>El protocolo HTTP/2 permite al servidor hacer PUSH de respuestas a un cliente que nunca las solicit&#243;. El tono de la conversaci&#243;n es: "Aqu&#237; tiene una solicitud que nunca envi&#243; y la respuesta llegar&#225; pronto..."</p>
+
+ <p>Pero hay restricciones: el cliente puede deshabilitar esta caracter&#237;stica y el servidor entonces solo podr&#225; hacer PUSH en una solicitud que hizo previamente del cliente.</p>
+
+ <p>La intenci&#243;n es permitir al servidor enviar recursos que el cliente seguramente vaya a necesitar, p. ej. un recurso css o javascript que pertenece a una p&#225;gina html que el cliente solicit&#243;, un grupo de im&#225;genes a las que se hace referencia en un css, etc.</p>
+
+ <p>La ventaja para el cliente es que ahorra tiempo para solicitudes que pueden tardar desde unos pocos milisegundos a medio segundo, dependiendo de la distancia entre el cliente y el servidor. La desventaja es que el cliente puede recibir cosas que ya tiene en su cache. Por supuesto que HTTP/2 soporta cancelaci&#243;n previa de tales solicitudes, pero aun as&#237; se malgastan recursos.</p>
+
+ <p>Resumiendo: no hay una estrategia mejor sobre c&#243;mo usar esta caracter&#237;stica de HTTP/2 y todo el mundo est&#225; experimentando con ella. As&#237; que, &#191;c&#243;mo experimenta usted con ella en Apache httpd?</p>
+
+ <p><code>mod_http2</code> busca e inspecciona las cabeceras de respuesta
+ <code>Link</code> con cierto formato:</p>
+
+ <pre class="prettyprint lang-config">Link &lt;/xxx.css&gt;;rel=preload, &lt;/xxx.js&gt;; rel=preload</pre>
+
+
+ <p>Si la conexi&#243;n soporta PUSH, estos dos recursos se enviar&#225;n al cliente. Como desarrollador web, puede configurar estas cabeceras o bien directamente en la respuesta de su aplicaci&#243;n o configurar su servidor con:</p>
+
+ <pre class="prettyprint lang-config">&lt;Location /xxx.html&gt;
+ Header add Link "&lt;/xxx.css&gt;;rel=preload"
+ Header add Link "&lt;/xxx.js&gt;;rel=preload"
+&lt;/Location&gt;</pre>
+
+
+ <p>Si quiere usar enlaces con <code>preload</code> sin activar un PUSH, puede usar el par&#225;metro <code>nopush</code>, como en:</p>
+
+ <pre class="prettyprint lang-config">Link &lt;/xxx.css&gt;;rel=preload;nopush</pre>
+
+
+ <p>o puede desactivar PUSH para su servidor por completo con la directiva </p>
+
+ <pre class="prettyprint lang-config">H2Push Off</pre>
+
+
+ <p>Y hay m&#225;s:</p>
+
+ <p>El m&#243;dulo mantiene un registro de lo que se ha enviado con PUSH para cada conexi&#243;n (hashes de URLs, b&#225;sicamente) y no har&#225; PUSH del mismo recurso dos veces. Cuando la conexi&#243;n se cierra, la informaci&#243;n es descartada.</p>
+
+ <p>Hay gente pensando c&#243;mo un cliente puede decirle al servidor lo que ya tiene, para evitar los PUSH de esos elementos, pero eso algo muy experimental ahora mismo.</p>
+
+ <p>Otro borrador experimental que ha sido implementado en
+ <code>mod_http2</code> es el <a href="https://tools.ietf.org/html/draft-ruellan-http-accept-push-policy-00"> Campo de Cabecera
+ Accept-Push-Policy</a> en la que un cliente puede, para cada solicitud, definir qu&#233; tipo de PUSH acepta.</p>
+ </div></div>
+<div class="bottomlang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/http2.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../es/howto/http2.html" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
+<a href="../fr/howto/http2.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a></p>
+</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comentarios</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+var comments_shortname = 'httpd';
+var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/http2.html';
+(function(w, d) {
+ if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
+ d.write('<div id="comments_thread"><\/div>');
+ var s = d.createElement('script');
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+ (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+ }
+ else {
+ d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
+ }
+})(window, document);
+//--><!]]></script></div><div id="footer">
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los t&#233;rminos de <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">M&#243;dulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
+if (typeof(prettyPrint) !== 'undefined') {
+ prettyPrint();
+}
+//--><!]]></script>
+</body></html> \ No newline at end of file
diff --git a/docs/manual/howto/http2.xml.es b/docs/manual/howto/http2.xml.es
new file mode 100644
index 0000000000..ae56677881
--- /dev/null
+++ b/docs/manual/howto/http2.xml.es
@@ -0,0 +1,258 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?>
+<!-- English Revision: 1780813 -->
+<!-- Spanish translation : Daniel Ferradal -->
+<!-- Reviewed & updated by Luis Gil de Bernabé Pfeiffer lgilbernabe[AT]apache.org -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="http2.xml.meta">
+<parentdocument href="./">How-To / Tutoriales</parentdocument>
+
+ <title>Guía HTTP/2</title>
+
+ <summary>
+ <p>Esta es la guía para configurar HTTP/2 en Apache httpd. Ésta
+ característica es <em>experimental</em> así que es de esperar que algunas
+ directivas e interfaces cambien con nuevas versiones.
+ </p>
+ </summary>
+ <seealso><a href="../mod/mod_http2.html">mod_http2</a></seealso>
+
+ <section id="protocol">
+ <title>El protocolo HTTP/2</title>
+
+ <p>HTTP/2 es la evolución del protocolo de la capa de aplicación con más
+ éxito, HTTP. Se centra en hacer un uso más eficiente de los recursos de red. No cambia la característica fundamental de HTTP, la semántica. Todavía hay solicitudes, respuestas, cabeceras y todo los elementos típicos de HTTP/1. Así que, si ya conoce HTTP/1, también conoce el 95% de HTTP/2.</p>
+
+ <p>Se ha escrito mucho sobre HTTP/2 y de cómo funciona. La norma más
+ estándar es, por supuesto, su
+ <a href="https://tools.ietf.org/html/rfc7540">RFC 7540</a>
+ (<a href="http://httpwg.org/specs/rfc7540.html"> también disponible en un
+ formato más legible, YMMV</a>). Así que, ahí encontrará toda la especificación del protocolo.</p>
+
+ <p>Pero, como con todos los RFC, no es ideal como primera lectura. Es mejor
+ entender primero <em>qué</em> se quiere hacer y después leer el RFC sobre
+ <em>cómo</em> hacerlo. Un documento mucho mejor con el que empezar es
+ <a href="https://daniel.haxx.se/http2/">http2 explicado</a>
+ por Daniel Stenberg, el autor de <a href="https://curl.haxx.se">curl</a>.
+ ¡También está disponible cada vez en un mayor número lenguajes!</p>
+
+ <p>Si le parece demasiado largo, o no lo ha leido, hay algunos términos
+ y elementos a tener en cuenta cuando lea este documento:</p>
+ <ul>
+ <li>HTTP/2 es un <strong>protocolo binario</strong>, al contrario que HTTP 1.1 que es texto plano. La intención para HTTP 1.1 es que sea legible (por ejemplo capturando el tráfico de red) mientras que para HTTP/2 no. Más información en el FAQ oficial <a href="https://http2.github.io/faq/#why-is-http2-binary">¿Por qué es binario HTTP/2?</a></li>
+
+ <li><strong>h2</strong> es HTTP/2 sobre TLS (negociación de protocolo a través de ALPN).</li>
+
+ <li><strong>h2c</strong> es HTTP/2 sobre TCP.</li>
+
+ <li>Un <strong>frame</strong> es la unidad más pequeña de comunicación dentro de una conexión HTTP/2, que consiste en una cabecera y una secuencia de octetos de longitud variable estructurada de acuerdo con el tipo de frame. Más información en la documentación oficial <a href="http://httpwg.org/specs/rfc7540.html#FramingLayer">Sección de Capa de Frame</a>.</li>
+
+ <li>Un <strong>stream</strong> es un flujo bidireccional de frames dentro de una conexión HTTP/2. El concepto correspondiente en HTTP 1.1 es un intercambio de mensajes de solicitud/respuesta. Más información en la documentación oficial <a href="http://httpwg.org/specs/rfc7540.html#StreamsLayer">Sección Capa de Stream</a>.</li>
+
+ <li>HTTP/2 es capaz de llevar <strong>múltiples streams</strong> de datos sobre la misma conexión TCP, evitando la clásica solicitud lenta "head-of-line blocking" de HTTP 1.1 y evitando generar múltiples conexiones TCP para cada solicitud/respuesta (KeepAlive parcheó el problema en HTTP 1.1 pero no lo resolvió completamente).</li>
+ </ul>
+ </section>
+
+ <section id="implementation">
+ <title>HTTP/2 en Apache httpd</title>
+ <p>El protocolo HTTP/2 se implementa con su propio módulo httpd, llamado acertadamente <a href="../mod/mod_http2.html">mod_http2</a>. Incluye el set completo de características descritas por el RFC 7540 y soporta HTTP/2 sobre texto plano (http:), así como conexiones seguras (https:). La variante de texto plano se llama '<code>h2c</code>', la segura '<code>h2</code>'. Para <code>h2c</code> permite el modo <em>direct</em>
+ y el <code>Upgrade:</code> a través de una solicitud inicial HTTP/1.</p>
+
+ <p>Una característica de HTTP/2 que ofrece capacidades nuevas para desarrolladores de web es <a href="#push">Server Push</a>. Vea esa sección para saber como su aplicación web puede hacer uso de ella.</p>
+ </section>
+
+ <section id="building">
+ <title>Compilar httpd con soporte HTTP/2</title>
+ <p><a href="../mod/mod_http2.html">mod_http2</a> usa la librería <a href="https://nghttp2.org">nghttp2</a>
+ como su implementación base. Para compilar <code>mod_http2</code> necesita al menos la versión 1.2.1 de <code>libnghttp2</code> instalada en su sistema.</p>
+
+ <p>Cuando usted ejecuta <code>./configure</code> en el código fuente de Apache HTTPD, necesita indicarle '<code>--enable-http2</code>' como una opción adicional para activar la compilación de este módulo. Si su <code>libnghttp2</code> está ubicado en una ruta no habitual (cualquiera que sea en su sistema operativo), puede indicar su ubicación con '<code>--with-nghttp2=&lt;path&gt;</code>' para <code>./configure</code>.</p>
+
+ <p>Aunque puede que eso sirva para la mayoría, habrá quien prefiera un <code>nghttp2</code> compilado estáticamente para este módulo. Para ellos existe la opción <code>--enable-nghttp2-staticlib-deps</code>. Funciona de manera muy similar a como uno debe enlazar openssl estáticamente para mod_ssl.</p>
+
+ <p>Hablando de SSL, necesita estar al tanto de que la mayoría de los navegadores hablan HTTP/2 solo con URLs <code>https:</code>. Así que necesita un servidor con soporte SSL. Pero no solo eso, necesitará una librería SSL que de soporte a la extensión <code>ALPN</code>. Si usa OpenSSL, necesita al menos la versión 1.0.2.</p>
+ </section>
+
+ <section id="basic-config">
+ <title>Configuración básica</title>
+
+ <p>Cuando tiene un <code>httpd</code> compilado con <code>mod_http2</code> necesita una configuración básica para activarlo. Lo primero, como con cualquier otro módulo de Apache, es que necesita cargarlo:</p>
+
+ <highlight language="config">
+LoadModule http2_module modules/mod_http2.so
+ </highlight>
+
+ <p>La segunda directiva que necesita añadir a la configuración de su servidor es:</p>
+
+ <highlight language="config">
+Protocols h2 http/1.1
+ </highlight>
+
+ <p>Esto permite h2, la variante segura, para ser el protocolo preferido de las conexiones en su servidor. Cuando quiera habilitar todas las variantes de HTTP/2, entonces simplemente configure:</p>
+
+ <highlight language="config">
+Protocols h2 h2c http/1.1
+ </highlight>
+
+ <p>Dependiendo de dónde pone esta directiva, afecta a todas las conexiones o solo a las de ciertos host virtuales. La puede anidar, como en:</p>
+
+ <highlight language="config">
+Protocols http/1.1
+&lt;VirtualHost ...&gt;
+ ServerName test.example.org
+ Protocols h2 http/1.1
+&lt;/VirtualHost&gt;
+ </highlight>
+
+ <p>Esto solo permite HTTP/1, excepto conexiones SSL hacia <code>test.example.org</code> que ofrecen HTTP/2.</p>
+
+ <note><title>Escoger un SSLCipherSuite seguro</title>
+ <p>Es necesario configurar <directive module="mod_ssl">SSLCipherSuite</directive> con una suite segura de cifrado TLS. La versión actual de mod_http2 no fuerza ningún cifrado pero la mayoría de los clientes si lo hacen. Encaminar un navegador hacia un servidor con <code>h2</code> activado con una suite inapropiada de cifrados forzará al navegador a rehusar e intentar conectar por HTTP 1.1. Esto es un error común cuando se configura httpd con HTTP/2 por primera vez, ¡así que por favor tenga en cuenta que debe evitar largas sesiones de depuración! Si quiere estar seguro de la suite de cifrados que escoja, por favor evite los listados en la <a href="http://httpwg.org/specs/rfc7540.html#BadCipherSuites">Lista Negra de TLS para HTTP/2</a>.</p>
+ </note>
+
+ <p>El orden de los protocolos mencionados también es relevante. Por defecto, el primero es el protocolo preferido. Cuando un cliente ofrece múltiples opciones, la que esté más a la izquierda será la escogida. En</p>
+ <highlight language="config">
+Protocols http/1.1 h2
+ </highlight>
+
+ <p>el protocolo preferido es HTTP/1 y siempre será seleccionado a menos que el cliente <em>sólo</em> soporte h2. Puesto que queremos hablar HTTP/2 con clientes que lo soporten, el orden correcto es:</p>
+
+ <highlight language="config">
+Protocols h2 h2c http/1.1
+ </highlight>
+
+ <p>Hay algo más respecto al orden: el cliente también tiene sus propias preferencias. Si quiere, puede configurar su servidor para seleccionar el protocolo preferido por el cliente:</p>
+
+ <highlight language="config">
+ProtocolsHonorOrder Off
+ </highlight>
+
+ <p>Hace que el orden en que <em>usted</em> escribió los Protocols sea irrelevante y sólo el orden de preferencia del cliente será decisorio.</p>
+
+ <p>Una última cosa: cuando usted configura los protocolos no se comprueba si son correctos o están bien escritos. Puede mencionar protocolos que no existen, así que no hay necesidad de proteger <code>Protocols</code> con ningún <code>IfModule</code> de comprobación.</p>
+
+ <p>Para más consejos avanzados de configuración, vea la <a href="../mod/mod_http2.html#dimensioning">
+ sección de módulos sobre dimensionamiento</a> y <a href="../mod/mod_http2.html#misdirected">
+ como gestionar multiples hosts con el mismo certificado</a>.</p>
+ </section>
+
+ <section id="mpm-config">
+ <title>Configuración MPM</title>
+
+ <p>HTTP/2 está soportado en todos los módulos de multi-proceso que se ofrecen con httpd. Aun así, si usa el mpm <code>prefork</code>, habrá restricciones severas.</p>
+
+ <p>En <code>prefork</code>, <code>mod_http2</code> solo procesará una solicitud cada vez por conexión. Pero los clientes, como los navegadores, enviarán muchas solicitudes al mismo tiempo. Si una de ellas tarda mucho en procesarse (o hace un sondeo que dura más de la cuenta), las otras solicitudes se quedarán atascadas.</p>
+
+ <p><code>mod_http2</code> no evitará este límite por defecto. El motivo es que <code>prefork</code> hoy en día solo se escoge si ejecuta motores de proceso que no están preparados para multi-hilo, p.ej. fallará con más de una solicitud.</p>
+
+ <p>Si su configuración lo soporta, hoy en día <code>event</code> es el mejor mpm que puede usar.</p>
+
+ <p>Si realmente está obligado a usar <code>prefork</code> y quiere multiples solicitudes, puede configurar la directiva <directive module="mod_http2">H2MinWorkers</directive> para hacerlo posible. Sin embargo, si esto falla, es bajo su cuenta y riesgo.</p>
+ </section>
+
+ <section id="clients">
+ <title>Clientes</title>
+
+ <p>Casi todos los navegadores modernos dan soporte a HTTP/2, pero solo en conexiones SSL: Firefox (v43), Chrome (v45), Safari (since v9), iOS Safari (v9), Opera (v35), Chrome para Android (v49) e Internet Explorer (v11 en Windows10) (<a href="http://caniuse.com/#search=http2">Fuente</a>).</p>
+
+ <p>Otros clientes, así cómo otros servidores, están listados en la
+ <a href="https://github.com/http2/http2-spec/wiki/Implementations">wiki de Implementaciones</a>, entre ellos, implementaciones para c, c++, common lisp, dart, erlang, haskell, java, nodejs, php, python, perl, ruby, rust, scala y swift.</p>
+
+ <p>Muchos de las implementaciones de clientes que no son navegadores soportan HTTP/2 sobre texto plano, h2c. La más versátil es <a href="https://curl.haxx.se">curl</a>.</p>
+ </section>
+
+ <section id="tools">
+ <title>Herramientas útiles para depurar HTTP/2</title>
+
+ <p>La primera herramienta a mencionar es por supuesto <a href="https://curl.haxx.se">curl</a>. Por favor asegúrese de que su versión soporta HTTP/2 comprobando sus <code>Características</code>:</p>
+ <highlight language="config">
+ $ curl -V
+ curl 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4
+ Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...]
+ Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP <strong>HTTP2</strong>
+ </highlight>
+ <note><title>Notas sobre Mac OS homebrew</title>
+ brew install curl --with-openssl --with-nghttp2
+ </note>
+ <p>Y para una inspección en gran profundidad <a href="https://wiki.wireshark.org/HTTP2">wireshark</a>.</p>
+ <p>El paquete <a href="https://nghttp2.org">nghttp2</a> también incluye clientes, tales como:</p>
+ <ul>
+ <li><a href="https://nghttp2.org/documentation/nghttp.1.html">nghttp
+ </a> - util para visualizar la frames de HTTP/2 y tener una mejor idea de como funciona el protocolo.</li>
+ <li><a href="https://nghttp2.org/documentation/h2load-howto.html">h2load</a> - útil para hacer un stress-test de su servidor.</li>
+ </ul>
+
+ <p>Chrome ofrece logs detallados de HTTP/2 en sus conexiones a través de la <a href="chrome://net-internals/#http2">página especial de net-internals</a>. También hay una extensión interesante para <a href="https://chrome.google.com/webstore/detail/http2-and-spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin?hl=en">Chrome</a> y <a href="https://addons.mozilla.org/en-us/firefox/addon/spdy-indicator/">Firefox</a> con la que visualizar cuando su navegador usa HTTP/2.</p>
+ </section>
+
+ <section id="push">
+ <title>Server Push</title>
+
+ <p>El protocolo HTTP/2 permite al servidor hacer PUSH de respuestas a un cliente que nunca las solicitó. El tono de la conversación es: &quot;Aquí tiene una solicitud que nunca envió y la respuesta llegará pronto...&quot;</p>
+
+ <p>Pero hay restricciones: el cliente puede deshabilitar esta característica y el servidor entonces solo podrá hacer PUSH en una solicitud que hizo previamente del cliente.</p>
+
+ <p>La intención es permitir al servidor enviar recursos que el cliente seguramente vaya a necesitar, p. ej. un recurso css o javascript que pertenece a una página html que el cliente solicitó, un grupo de imágenes a las que se hace referencia en un css, etc.</p>
+
+ <p>La ventaja para el cliente es que ahorra tiempo para solicitudes que pueden tardar desde unos pocos milisegundos a medio segundo, dependiendo de la distancia entre el cliente y el servidor. La desventaja es que el cliente puede recibir cosas que ya tiene en su cache. Por supuesto que HTTP/2 soporta cancelación previa de tales solicitudes, pero aun así se malgastan recursos.</p>
+
+ <p>Resumiendo: no hay una estrategia mejor sobre cómo usar esta característica de HTTP/2 y todo el mundo está experimentando con ella. Así que, ¿cómo experimenta usted con ella en Apache httpd?</p>
+
+ <p><code>mod_http2</code> busca e inspecciona las cabeceras de respuesta
+ <code>Link</code> con cierto formato:</p>
+
+ <highlight language="config">
+Link &lt;/xxx.css&gt;;rel=preload, &lt;/xxx.js&gt;; rel=preload
+ </highlight>
+
+ <p>Si la conexión soporta PUSH, estos dos recursos se enviarán al cliente. Como desarrollador web, puede configurar estas cabeceras o bien directamente en la respuesta de su aplicación o configurar su servidor con:</p>
+
+ <highlight language="config">
+&lt;Location /xxx.html&gt;
+ Header add Link "&lt;/xxx.css&gt;;rel=preload"
+ Header add Link "&lt;/xxx.js&gt;;rel=preload"
+&lt;/Location&gt;
+ </highlight>
+
+ <p>Si quiere usar enlaces con <code>preload</code> sin activar un PUSH, puede usar el parámetro <code>nopush</code>, como en:</p>
+
+ <highlight language="config">
+Link &lt;/xxx.css&gt;;rel=preload;nopush
+ </highlight>
+
+ <p>o puede desactivar PUSH para su servidor por completo con la directiva </p>
+
+ <highlight language="config">
+H2Push Off
+ </highlight>
+
+ <p>Y hay más:</p>
+
+ <p>El módulo mantiene un registro de lo que se ha enviado con PUSH para cada conexión (hashes de URLs, básicamente) y no hará PUSH del mismo recurso dos veces. Cuando la conexión se cierra, la información es descartada.</p>
+
+ <p>Hay gente pensando cómo un cliente puede decirle al servidor lo que ya tiene, para evitar los PUSH de esos elementos, pero eso algo muy experimental ahora mismo.</p>
+
+ <p>Otro borrador experimental que ha sido implementado en
+ <code>mod_http2</code> es el <a href="https://tools.ietf.org/html/draft-ruellan-http-accept-push-policy-00"> Campo de Cabecera
+ Accept-Push-Policy</a> en la que un cliente puede, para cada solicitud, definir qué tipo de PUSH acepta.</p>
+ </section>
+
+</manualpage>
diff --git a/docs/manual/howto/http2.xml.meta b/docs/manual/howto/http2.xml.meta
index 04a0158938..368861be37 100644
--- a/docs/manual/howto/http2.xml.meta
+++ b/docs/manual/howto/http2.xml.meta
@@ -8,6 +8,7 @@
<variants>
<variant>en</variant>
+ <variant>es</variant>
<variant>fr</variant>
</variants>
</metafile>
diff --git a/docs/manual/howto/index.html b/docs/manual/howto/index.html
index 7c5b454a3e..4b14fb4150 100644
--- a/docs/manual/howto/index.html
+++ b/docs/manual/howto/index.html
@@ -4,6 +4,10 @@ URI: index.html.en
Content-Language: en
Content-type: text/html; charset=ISO-8859-1
+URI: index.html.es
+Content-Language: es
+Content-type: text/html; charset=ISO-8859-1
+
URI: index.html.fr
Content-Language: fr
Content-type: text/html; charset=ISO-8859-1
diff --git a/docs/manual/howto/index.xml.es b/docs/manual/howto/index.xml.es
new file mode 100644
index 0000000000..55ef7b3219
--- /dev/null
+++ b/docs/manual/howto/index.xml.es
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?>
+<!-- English Revision: 1786687 -->
+<!-- Spanish translation : Daniel Ferradal -->
+<!-- Reviewed by : Luis Gil de Bernabé Pfeiffer lgilbernabe [AT] apache.org -->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="index.xml.meta">
+ <parentdocument href="../"/>
+
+ <title>How-To / Tutoriales</title>
+
+ <section id="howto">
+
+ <title>How-To / Tutoriales</title>
+
+ <dl>
+ <dt>Autenticación y Autorización</dt>
+ <dd>
+ <p>Autenticación es un proceso en el cual se verifica
+ que alguien es quien afirma ser. Autorización es cualquier
+ proceso en el que se permite a alguien acceder donde quiere ir,
+ o a obtener la información que desea tener.</p>
+
+ <p>Ver: <a href="auth.html">Autenticación, Autorización</a></p>
+ </dd>
+ </dl>
+
+ <dl>
+ <dt>Control de Acceso</dt>
+ <dd>
+ <p>Control de acceso hace referencia al proceso de restringir, o
+ garantizar el acceso a un recurso en base a un criterio arbitrario.
+ Esto se puede conseguir de distintas formas.</p>
+
+ <p>Ver: <a href="access.html">Control de Acceso</a></p>
+ </dd>
+ </dl>
+
+ <dl>
+ <dt>Contenido Dinámico con CGI</dt>
+ <dd>
+ <p>El CGI (Common Gateway Interface) es un método por el cual
+ un servidor web puede interactuar con programas externos de
+ generación de contenido, a ellos nos referimos comúnmente como
+ programas CGI o scripts CGI. Es un método sencillo para mostrar
+ contenido dinámico en tu sitio web. Este documento es una
+ introducción para configurar CGI en tu servidor web Apache, y de
+ inicio para escribir programas CGI.</p>
+
+ <p>Ver: <a href="cgi.html">CGI: Contenido Dinámico</a></p>
+ </dd>
+ </dl>
+
+ <dl>
+ <dt>Ficheros <code>.htaccess</code></dt>
+ <dd>
+ <p>Los ficheros <code>.htaccess</code> facilitan una forma de
+ hacer configuraciones por-directorio. Un archivo, que
+ contiene una o más directivas de configuración, se coloca en un
+ directorio específico y las directivas especificadas solo aplican
+ sobre ese directorio y los subdirectorios del mismo.</p>
+
+ <p>Ver: <a href="htaccess.html"><code>.htaccess</code> files</a></p>
+ </dd>
+ </dl>
+
+ <dl>
+ <dt>HTTP/2 con httpd</dt>
+ <dd>
+ <p>HTTP/2 es la evolución del protocolo de capa de aplicación más conocido, HTTP.
+ Se centra en hacer un uso más eficiente de los recursos de red sin cambiar la
+ semántica de HTTP. Esta guía explica como se implementa HTTP/2 en httpd,
+ mostrando buenas prácticas y consejos de configuración básica.
+ </p>
+
+ <p>Ver: <a href="http2.html">Guía HTTP/2</a></p>
+ </dd>
+ </dl>
+
+
+ <dl>
+ <dt>Introducción a los SSI</dt>
+ <dd>
+ <p>Los SSI (Server Side Includes) son directivas que se colocan
+ en las páginas HTML, y son evaluadas por el servidor mientras
+ éste las sirve. Le permiten añadir contenido generado
+ dinámicamente a una página HTML existente, sin tener que servir
+ la página entera a través de un programa CGI u otro método
+ dinámico.</p>
+
+ <p>Ver: <a href="ssi.html">Server Side Includes (SSI)</a></p>
+ </dd>
+ </dl>
+
+ <dl>
+ <dt>Directorios web Por-usuario</dt>
+ <dd>
+ <p>En sistemas con múltiples usuarios, cada usuario puede tener
+ su directorio "home" compartido usando la directiva
+ <directive module="mod_userdir">UserDir</directive>. Aquellos
+ que visiten la URL <code>http://example.com/~username/</code>
+ obtendrán contenido del directorio del usuario "<code>username</code>"
+ que se encuentra en el directorio "home" del sistema.</p>
+
+ <p>Ver: <a href="public_html.html">
+ Directorios Web de Usuario (<code>public_html</code>)</a></p>
+ </dd>
+ </dl>
+
+ <dl>
+ <dt>Guía de Proxy Inverso</dt>
+ <dd>
+ <p>Apache httpd ofrece muchas posibilidades como proxy inverso. Usando la
+ directiva <directive module="mod_proxy">ProxyPass</directive> así como
+ <directive module="mod_proxy">BalancerMember</directive> puede crear
+ sofisticadas configuraciones de proxy inverso que proveen de alta
+ disponibilidad, balanceo de carga, clustering basado en la nube y
+ reconfiguración dinámica en caliente.</p>
+
+ <p>Ver: <a href="reverse_proxy.html">Guía de Proxy Inverso</a></p>
+ </dd>
+ </dl>
+
+ </section>
+
+</manualpage>
+
+
diff --git a/docs/manual/howto/index.xml.meta b/docs/manual/howto/index.xml.meta
index 75fbfff410..295c1e7609 100644
--- a/docs/manual/howto/index.xml.meta
+++ b/docs/manual/howto/index.xml.meta
@@ -8,6 +8,7 @@
<variants>
<variant>en</variant>
+ <variant>es</variant>
<variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
diff --git a/docs/manual/howto/public_html.html b/docs/manual/howto/public_html.html
index 7a9715bd53..4eb8cbede2 100644
--- a/docs/manual/howto/public_html.html
+++ b/docs/manual/howto/public_html.html
@@ -4,6 +4,10 @@ URI: public_html.html.en
Content-Language: en
Content-type: text/html; charset=ISO-8859-1
+URI: public_html.html.es
+Content-Language: es
+Content-type: text/html; charset=ISO-8859-1
+
URI: public_html.html.fr
Content-Language: fr
Content-type: text/html; charset=ISO-8859-1
diff --git a/docs/manual/howto/public_html.xml.es b/docs/manual/howto/public_html.xml.es
new file mode 100644
index 0000000000..05e72e8789
--- /dev/null
+++ b/docs/manual/howto/public_html.xml.es
@@ -0,0 +1,198 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?>
+<!-- English Revision: 1745806 -->
+<!-- Spanish translation : Daniel Ferradal -->
+<!-- Reviewed by: Luis Gil de Bernabé Pfeiffer -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="public_html.xml.meta">
+<parentdocument href="./">How-To / Tutorials</parentdocument>
+
+ <title>Directorios web por usuario</title>
+
+<summary>
+ <p>En sistemas con múltiples usuarios, cada usuario puede tener un website
+ en su directorio home usando la directiva <directive
+ module="mod_userdir">UserDir</directive>. Los visitantes de una URL
+ <code>http://example.com/~username/</code> recibirán el contenido del
+ directorio home del usuario "<code>username</code>", en el subdirectorio
+ especificado por la directiva <directive module="mod_userdir">UserDir</directive>.</p>
+
+ <p>Tenga en cuenta que, por defecto, el acceso a estos directorios
+ <strong>NO</strong> está activado. Puede permitir acceso cuando usa
+ <directive module="mod_userdir"
+ >UserDir</directive> quitando el comentario de la línea:</p>
+
+ <highlight language="config">
+ #Include conf/extra/httpd-userdir.conf
+ </highlight>
+
+ <p>En el fichero por defecto de configuración <code>conf/httpd.conf</code>,
+ y adaptando el fichero <code>httpd-userdir.conf</code> según sea necesario,
+ o incluyendo las directivas apropiadas en un bloque
+ <directive module="core" type="section">Directory</directive> dentro del fichero
+ principal de configuración.</p>
+</summary>
+
+<seealso><a href="../urlmapping.html">Mapeando URLs al sistema de ficheros</a></seealso>
+
+ <section id="related">
+ <title>Directorios web por usuario</title>
+ <related>
+ <modulelist>
+ <module>mod_userdir</module>
+ </modulelist>
+ <directivelist>
+ <directive module="mod_userdir">UserDir</directive>
+ <directive module="core">DirectoryMatch</directive>
+ <directive module="core">AllowOverride</directive>
+ </directivelist>
+ </related>
+ </section>
+
+ <section id="userdir">
+ <title>Configurando la ruta del fichero con UserDir</title>
+
+ <p>La directiva <directive module="mod_userdir">UserDir</directive>
+ especifica un directorio del que cargar contenido por usuario. Esta directiva
+ puede tener muchas formas distintas.</p>
+
+ <p>Si se especifica una ruta que no empieza con una barra ("/"), se asume que
+ va a ser una ruta de directorio relativa al directorio home del usuario
+ especificado. Dada ésta configuración:</p>
+
+ <highlight language="config">
+UserDir public_html
+ </highlight>
+
+ <p>La URL <code>http://example.com/~rbowen/file.html</code> se traducirá en
+ la ruta del fichero <code>/home/rbowen/public_html/file.html</code></p>
+
+ <p>Si la ruta que se especifica comienza con una barra ("/"), la ruta del
+ directorio se construirá usando esa ruta, más el usuario especificado en la
+ configuración:</p>
+
+ <highlight language="config">
+UserDir /var/html
+ </highlight>
+
+ <p>La URL <code>http://example.com/~rbowen/file.html</code> se traducirá en
+ la ruta del fichero <code>/var/html/rbowen/file.html</code></p>
+
+ <p>Si se especifica una ruta que contiene un asterisco (*), se usará una ruta
+ en la que el asterisco se reemplaza con el nombre de usuario. Dada ésta configuración:</p>
+
+ <highlight language="config">
+UserDir /var/www/*/docs
+ </highlight>
+
+ <p>La URL <code>http://example.com/~rbowen/file.html</code> se traducirá en
+ la ruta del fichero <code>/var/www/rbowen/docs/file.html</code></p>
+
+ <p>También se pueden configurar múltiples directorios o rutas de directorios.</p>
+
+ <highlight language="config">
+UserDir public_html /var/html
+ </highlight>
+
+ <p>Para la URL <code>http://example.com/~rbowen/file.html</code>,
+ Apache buscará <code>~rbowen</code>. Si no lo encuentra, Apache buscará
+ <code>rbowen</code> en <code>/var/html</code>. Si lo encuentra, la URL de más
+ arriba se traducirá en la ruta del fichero
+ <code>/var/html/rbowen/file.html</code></p>
+
+ </section>
+
+ <section id="redirect">
+ <title>Redirigiendo a URLs externas</title>
+ <p>La directiva <directive module="mod_userdir">UserDir</directive> puede
+ usarse para redirigir solcitudes de directorios de usuario a URLs externas.</p>
+
+ <highlight language="config">
+UserDir http://example.org/users/*/
+ </highlight>
+
+ <p>El ejemplo de aquí arriba redirigirá una solicitud para
+ <code>http://example.com/~bob/abc.html</code> hacia
+ <code>http://example.org/users/bob/abc.html</code>.</p>
+ </section>
+
+ <section id="enable">
+ <title>Restringiendo qué usuarios pueden usar esta característica</title>
+
+ <p>Usando la sintaxis que se muestra en la documentación de UserDir, usted
+ puede restringir a qué usuarios se les permite usar esta funcionalidad:</p>
+
+ <highlight language="config">
+UserDir disabled root jro fish
+ </highlight>
+
+ <p>La configuración de aquí arriba permitirá a todos los usuarios excepto a
+ los que se listan con la declaración <code>disabled</code>. Usted puede,
+ del mismo modo, deshabilitar esta característica para todos excepto algunos
+ usuarios usando una configuración como la siguiente:</p>
+
+ <highlight language="config">
+UserDir disabled
+UserDir enabled rbowen krietz
+ </highlight>
+
+ <p>Vea la documentación de <directive module="mod_userdir">UserDir</directive> para más
+ ejemplos.</p>
+
+ </section>
+
+ <section id="cgi">
+ <title>Activando un directorio cgi para cada usuario</title>
+
+ <p>Para dar a cada usuario su propio directorio cgi-bin, puede usar una directiva
+ <directive module="core" type="section">Directory</directive>
+ para activar cgi en un subdirectorio en particular del directorio home del usuario.</p>
+
+ <highlight language="config">
+&lt;Directory "/home/*/public_html/cgi-bin/"&gt;
+ Options ExecCGI
+ SetHandler cgi-script
+&lt;/Directory&gt;
+ </highlight>
+
+ <p>Entonces, asumiendo que <code>UserDir</code> está configurado con la
+ declaración <code>public_html</code>, un programa cgi <code>example.cgi</code>
+ podría cargarse de ese directorio así:</p>
+
+ <example>
+ http://example.com/~rbowen/cgi-bin/example.cgi
+ </example>
+
+ </section>
+
+ <section id="htaccess">
+ <title>Permitiendo a usuarios cambiar la configuración</title>
+
+ <p>Si quiere permitir que usuarios modifiquen la configuración del servidor en
+ su espacio web, necesitarán usar ficheros <code>.htaccess</code> para hacer
+ estos cambios. Asegúrese de tener configurado <directive
+ module="core">AllowOverride</directive> con un valor suficiente que permita a
+ los usuarios modificar las directivas que quiera permitir.
+ Vea el <a href="htaccess.html">tutorial de .htaccess</a> para obtener detalles adicionales sobre cómo funciona.</p>
+
+ </section>
+
+</manualpage>
diff --git a/docs/manual/howto/public_html.xml.meta b/docs/manual/howto/public_html.xml.meta
index 30c006edff..d942792ef1 100644
--- a/docs/manual/howto/public_html.xml.meta
+++ b/docs/manual/howto/public_html.xml.meta
@@ -8,6 +8,7 @@
<variants>
<variant>en</variant>
+ <variant>es</variant>
<variant>fr</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>