This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
-<title>Control de Acceso - Servidor HTTP Apache Versión 2.5</title>
+<title>Control de Acceso - Servidor HTTP Apache Versión 2.5</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" />
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
-<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Control de Acceso</h1>
+<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <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"> en </a> |
-<a href="../es/howto/access.html" title="Español"> es </a> |
-<a href="../fr/howto/access.html" hreflang="fr" rel="alternate" title="Français"> fr </a></p>
+<a href="../es/howto/access.html" title="Español"> es </a> |
+<a href="../fr/howto/access.html" hreflang="fr" rel="alternate" title="Français"> fr </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á
- separada de <a href="auth.html">autenticación y autorización</a>.</p>
+ 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>
</div>
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Módulos y Directivas relacionados</a></li>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Mó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ás información</a></li>
-</ul><h3>Consulte también</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Más información</a></li>
+</ul><h3>Consulte tambié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ódulos y Directivas relacionados</a></h2>
+<h2><a name="related" id="related">Módulos y Directivas relacionados</a></h2>
- <p>El control de acceso puede efectuarse mediante diferentes módulos. Los
- más importantes de é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én se habla en este documento de
- el control de acceso usando el módulo <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
+ <p>El control de acceso puede efectuarse mediante diferentes módulos. Los
+ más importantes de é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én se habla en este documento de
+ el control de acceso usando el mó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ándonos
- en la dirección del visitante, esto puede ser realizado de manera
- fácil con el módulo <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>.
+ 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 <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á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
+ proporciona una variedad de diferentes maneras de permitir o denegar el acceso a los recursos. Ademá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íticas de acceso.</p>
+ sean tus polí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án obsoletas y
- serán quitadas en futuras versiones. Deberá evitar su uso, y también
+ proporcionadas por <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>, 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></div>
</pre>
- <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
+ <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
+ <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>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>
+ 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
+ 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>
<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>
+ 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>
<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ás especificar parte de una dirección o nombre de dominio:</p>
+ podrás especificar parte de una direcció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
<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ás complejos.</p>
+ para forzar requisitos más complejos.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<p>Haciendo el uso de <code class="directive"><a href="../mod/core.html#if"><If></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ándonos en el "user-agent" (tipo de navegador así como Sistema Operativo)
+ el acceso basándonos en el "user-agent" (tipo de navegador así como Sistema Operativo)
puede que hagamos lo siguiente:
</p>
<p>Usando la sintaxis de <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
- <code>expr</code> , esto también puede ser escrito de la siguiente forma:
+ <code>expr</code> , esto también puede ser escrito de la siguiente forma:
</p>
<div class="note"><h3>Advertencia:</h3>
- <p>El control de acceso por <code>User-Agent</code> es una técnica poco fiable,
+ <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>
</div>
- <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>
+ <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>
</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á denegar el acceso a recursos basándose
+ 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 <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>:</p>
+ 7am, podrá 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}" ">=20" [OR]
RewriteRule "^/fridge" "-" [F]</pre>
- <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
+ <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 <code class="directive"><a href="../mod/core.html#if"><If></a></code>,
- añadida en la 2.4, sustituye muchas cosas que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
- tradicionalmente solía hacer, y deberá comprobar estas antes de recurrir a
+ añadida en la 2.4, sustituye muchas cosas que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
+ tradicionalmente solía hacer, y deberá 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ás información</a></h2>
+<h2><a name="moreinformation" id="moreinformation">Más informació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ás detalles.</p>
+ documento para más detalles.</p>
- <p>También, deberá leer la documentación de <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>
- para ejemplos de combinaciones de múltiples requisitos de acceso y especificar
- cómo interactúan.
+ <p>También, deberá leer la documentación de <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>
+ 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>Vea también los howtos de <a href="auth.html">Authenticación y Autorizació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"> en </a> |
-<a href="../es/howto/access.html" title="Español"> es </a> |
-<a href="../fr/howto/access.html" hreflang="fr" rel="alternate" title="Français"> fr </a></p>
+<a href="../es/howto/access.html" title="Español"> es </a> |
+<a href="../fr/howto/access.html" hreflang="fr" rel="alternate" title="Français"> fr </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&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';
}
})(window, document);
//--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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[//><!--
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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();
}
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
-<title>Autenticación y Autorización - Servidor HTTP Apache Versión 2.5</title>
+<title>Autenticación y Autorización - Servidor HTTP Apache Versión 2.5</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" />
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
-<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Autenticación y Autorización</h1>
+<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Autenticación y Autorización</h1>
<div class="toplang">
<p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
-<a href="../es/howto/auth.html" title="Español"> es </a> |
-<a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
+<a href="../es/howto/auth.html" title="Español"> es </a> |
+<a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
-<a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
+<a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
- <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
+ <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>
+ <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>
</div>
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Módulos y Directivas Relacionados</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introducción</a></li>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Módulos y Directivas Relacionados</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introducció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ás de una persona
+<li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Dejar que má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étodo alternativo de almacenamiento de las
- contraseñas</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#multprovider">Uso de múltiples proveedores</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#beyond">Más allá de la Autorización</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#socache">Cache de Autenticación</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Más información</a></li>
-</ul><h3>Consulte también</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<li><img alt="" src="../images/down.gif" /> <a href="#dbmdbd">Método alternativo de almacenamiento de las
+ contraseñas</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#multprovider">Uso de múltiples proveedores</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#beyond">Más allá de la Autorización</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#socache">Cache de Autenticación</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Más información</a></li>
+</ul><h3>Consulte tambié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ódulos y Directivas Relacionados</a></h2>
+<h2><a name="related" id="related">Módulos y Directivas Relacionados</a></h2>
-<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>
+<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
+ <li>Modos de Autenticació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ón (consulte la directiva
+ <li>Proveedor de Autenticació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>)
<li><code class="module"><a href="../mod/mod_authn_socache.html">mod_authn_socache</a></code></li>
</ul>
</li>
- <li>Autorización (consulte la directiva
+ <li>Autorizació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>
</ul>
- <p>A parte de éstos módulos, también están
+ <p>A parte de éstos módulos, también está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>. Éstos módulos implementan las directivas
- esenciales que son el centro de todos los módulos de autenticación.</p>
-
- <p>El módulo <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> es tanto un proveedor de
- autenticación como de autorización. El módulo
- <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> 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,
+ <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>. Éstos módulos implementan las directivas
+ esenciales que son el centro de todos los módulos de autenticación.</p>
+
+ <p>El módulo <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> es tanto un proveedor de
+ autenticación como de autorización. El módulo
+ <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> 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 <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.</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>
+ <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>
</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ón</a></h2>
- <p>Si se tiene información en nuestra página web que sea información
+<h2><a name="introduction" id="introduction">Introducción</a></h2>
+ <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 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>
+ <p>Este artículo cubre la parte "estándar" de cómo proteger partes de un
+ sitio web que muchos usarán.</p>
<div class="note"><h3>Nota:</h3>
- <p>Si de verdad es necesario que tus datos estén en un sitio seguro,
- considera usar <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> como método de autenticación adicional a cualquier forma de autenticación.</p>
+ <p>Si de verdad es necesario que tus datos estén en un sitio seguro,
+ considera usar <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> como método de autenticación adicional a cualquier forma de autenticació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ículo necesitaran ponerse ya sea
- en el fichero de configuración principal del servidor ( típicamente en
- la sección
+ <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
<code class="directive"><a href="../mod/core.html#directory"><Directory></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á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
+ <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 <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ón
+ 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
+ <p>Ya que estamos hablando aquí de autenticación, necesitará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ón
- principal del servidor, deberás tener, claro está, permisos de escritura
+ <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
+ <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
+ 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
+ <p>También deberás de asegurarte de que los mó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ñ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>
+ 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>
</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í está lo básico de cómo proteger con contraseña un directorio en tu
+ <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>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
+ <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
+ <p>Para crear el fichero de contraseñ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ón.</p>
+ puede ser que se encuentre en su ruta de ejecución.</p>
<p>Para crear el fichero, escribiremos:</p>
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á por una contraseña, y después
- te pedirá que la vuelvas a escribir para confirmarla:</p>
+ <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> te preguntará por una contraseña, y después
+ te pedirá que la vuelvas a escribir para confirmarla:</p>
<div class="example"><p><code>
$ htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
Adding password for user rbowen
</code></p></div>
- <p>Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> 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:
+ <p>Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> 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.
+ <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,
+ 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 <Directory
- "/usr/local/apache/htdocs/secret"> , como se muestra a continuación:</p>
+ en la configuración global del servidor <code>httpd.conf</code> dentro de la
+ sección <Directory
+ "/usr/local/apache/htdocs/secret"> , como se muestra a continuación:</p>
<pre class="prettyprint lang-config"><Directory "/usr/local/apache/htdocs/secret">
AuthType Basic
<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é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
+ La directiva <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> 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
<code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>. Es muy importante ser consciente,
- de que la autenticación básica, envía las contraseñas desde el cliente
+ 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
+ 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
<code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>.
- 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 <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> 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 <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> en su lugar.
+ 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 <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> 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 <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ón. El
+ 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
+ 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,
+ 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 <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ás usar esta directiva si estas usando otro medio
- diferente para la autenticación, como por ejemplo
+ para esta directiva. Deberás usar esta directiva si estas usando otro medio
+ diferente para la autenticació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ñas que acabamos de crear con el
- comando <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. Si tiene un número muy grande de usuarios,
+ establece el path al fichero de contraseñas que acabamos de crear con el
+ comando <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. 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 <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
+ 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 <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é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>
+ 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 <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
- 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
+ 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 <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ás de una persona
+<h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Dejar que más de una persona
entre</a></h2>
- <p>Las directivas mencionadas arriba sólo permiten a una persona
+ <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
+ 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
<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ás de una persona el acceso, necesitarás
+ <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>
+ se parecerá a:</p>
<div class="example"><p><code>
GroupName: rbowen dpitts sungo rshersey
</code></p></div>
- <p>Básicamente eso es la lista de miembros los cuales están en un mismo fichero
+ <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>
+ <p>Para añadir un usuario a tu fichero de contraseñas existente teclee:</p>
<div class="example"><p><code>
htpasswd /usr/local/apache/passwd/passwords dpitts
</code></p></div>
- <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á
+ <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>
+ fichero de contraseñas).</p>
- <p>Ahora, tendrá que modificar su fichero <code>.htaccess</code> para que sea
+ <p>Ahora, tendrá que modificar su fichero <code>.htaccess</code> para que sea
parecido a lo siguiente:</p>
<pre class="prettyprint lang-config">AuthType Basic
Require group GroupName</pre>
- <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>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
+ <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>
<pre class="prettyprint lang-config">Require valid-user</pre>
- <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
+ <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
<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ón básica,
- su nombre de usuario y la contraseña deben ser verificados cada vez
+ <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
+ 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
+ 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>
+ 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,
+ <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
+ y por lo tanto consideraremos entonces otro método de autenticació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étodo alternativo de almacenamiento de las
- contraseñas</a></h2>
+<h2><a name="dbmdbd" id="dbmdbd">Método alternativo de almacenamiento de las
+ contraseñas</a></h2>
- <p>Debido a que el almacenamiento de las contraseñas en texto plano tiene
+ <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.
+ las contraseñas en otro lugar como por ejemplo una base de datos.
</p>
- <p>Los mó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ódulos que hacen esto posible. En vez de seleccionar la directiva de fichero
+ <p>Los mó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ó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>
</Directory></pre>
- <p>Hay otras opciones disponibles. Consulta la documentación de
- <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> para más detalles.</p>
+ <p>Hay otras opciones disponibles. Consulta la documentación de
+ <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> para má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últiples proveedores</a></h2>
+<h2><a name="multprovider" id="multprovider">Uso de múltiples proveedores</a></h2>
- <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
+ <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:
+ como el LDAP son usados en la autenticación:
</p>
<pre class="prettyprint lang-config"><Directory "/www/docs/private">
</Directory></pre>
- <p>En este ejemplo el fichero, que actúa como proveedor, intentará autenticar
+ <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
+ 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>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>
<pre class="prettyprint lang-config"><Directory "/www/docs/private">
</Directory></pre>
- <p>Para llevar la autorización un poco más lejos, las directivas
- de autorización de contenedores tales como
+ <p>Para llevar la autorización un poco más lejos, las directivas
+ de autorización de contenedores tales como
<code class="directive"><a href="../mod/mod_authz_core.html#requireall"><RequireAll></a></code>
and
<code class="directive"><a href="../mod/mod_authz_core.html#requireany"><RequireAny></a></code>
- 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>
+ 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>
</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ás allá de la Autorización</a></h2>
+<h2><a name="beyond" id="beyond">Más allá de la Autorización</a></h2>
- <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>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>
- <h3><a name="authandororder" id="authandororder">Aplicando la lógica y ordenación</a></h3>
- <p>Controlar el cómo y en qué orden se va a aplicar la autorización ha
+ <h3><a name="authandororder" id="authandororder">Aplicando la lógica y ordenación</a></h3>
+ <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
+ 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
+ Este proveedor de dicho mecanismo, ha sido introducido en la autorización
+ tambié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ó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
+ 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
<code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> aparece en la
- configuración.
+ configuración.
</p>
<p>
- Con la Introducción del contenedor de directivas de autorización tales como
+ Con la Introducción del contenedor de directivas de autorización tales como
<code class="directive"><a href="../mod/mod_authz_core.html#requireall"><RequireAll></a></code>
y
<code class="directive"><a href="../mod/mod_authz_core.html#requireany"><RequireAny></a></code>,
- 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.
+ 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.
+ <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>
<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"><RequireAny></a></code>.
- En otras palabras, Si alguno de los métodos de autorización
- especificados tiene éxito, se concede la autorización.
+ En otras palabras, Si alguno de los métodos de autorización
+ especificados tiene éxito, se concede la autorización.
</p>
- <h3><a name="reqaccessctrl" id="reqaccessctrl">Uso de los proveedores de autorización para
+ <h3><a name="reqaccessctrl" id="reqaccessctrl">Uso de los proveedores de autorización para
el control de acceso</a></h3>
<p>
- La autenticación de nombre de usuario y contraseña es sólo parte
+ 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.
+ 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>,
+ 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
+ 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
+ El uso de estos proveedores se especifica a travé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ón que serán llamados
- durante la solicitud de la fase del proceso de autorización. Por ejemplo:
+ 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>
<pre class="prettyprint lang-config">Require ip <var>address</var>
<p>
- Donde <var>address</var> es una dirección IP (o una dirección IP parcial)
+ Donde <var>address</var> es una dirección IP (o una dirección IP parcial)
o bien:
</p>
<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.
+ 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>
+ Por ejemplo, si alguien envía spam a su tablón de mensajes y desea
+ mantenerlos alejados, podría hacer lo siguiente:</p>
<pre class="prettyprint lang-config"><RequireAll>
Require all granted
<p>
- Visitantes que vengan desde esa IP no serán capaces de ver el contenido
+ 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:
+ la máquina, en vez de la dirección IP, podría usar:
</p>
<pre class="prettyprint lang-config"><RequireAll>
<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:
+ de la dirección o del propio dominio a bloquear:
</p>
<pre class="prettyprint lang-config"><RequireAll>
<p>
Usando <code class="directive"><a href="../mod/mod_authz_core.html#requireall"><RequireAll></a></code>
- con múltiples directivas <code class="directive"><a href="../mod/mod_authz_core.html#require"><Require></a></code>, 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
+ con múltiples directivas <code class="directive"><a href="../mod/mod_authz_core.html#require"><Require></a></code>, 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>
<p>
Uno de los efectos secundarios de adoptar proveedores basados en
- mecanismos de autenticación es que las directivas anteriores
+ mecanismos de autenticació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ódulo <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.
+ estas directivas se han movido al módulo <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.
</p>
<div class="warning"><h3>Nota:</h3>
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> ó
+ <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> con las nuevas
como
<code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
- es técnicamente posible pero desaconsejable. El módulo
- <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code> 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
+ es técnicamente posible pero desaconsejable. El módulo
+ <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code> 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>
</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ón</a></h2>
+<h2><a name="socache" id="socache">Cache de Autenticación</a></h2>
<p>
- Puede haber momentos en que la autenticación ponga una carga
- inaceptable en el proveedor (de autenticación) o en tu red.
+ 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 <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é <code class="module"><a href="../mod/mod_authn_socache.html">mod_authn_socache</a></code> para cachear las credenciales
+ de caché <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>
</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ás información</a></h2>
+<h2><a name="moreinformation" id="moreinformation">Más información</a></h2>
<p>
- También debería leer la documentación para
+ También debería leer la documentació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ál contiene más información de como funciona todo esto.
- La directiva <code class="directive"><a href="../mod/mod_authn_core.html#authnprovideralias"><AuthnProviderAlias></a></code> puede también ayudar
- a la hora de simplificar ciertas configuraciones de autenticación.
+ la cuál contiene más información de como funciona todo esto.
+ La directiva <code class="directive"><a href="../mod/mod_authn_core.html#authnprovideralias"><AuthnProviderAlias></a></code> 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>.
+ 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"
+ 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>
</div></div>
<div class="bottomlang">
<p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
-<a href="../es/howto/auth.html" title="Español"> es </a> |
-<a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
+<a href="../es/howto/auth.html" title="Español"> es </a> |
+<a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
-<a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
+<a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </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&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';
}
})(window, document);
//--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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[//><!--
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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();
}
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
-<title>Tutorial de Apache: Contenido Dinámico con CGI - Servidor HTTP Apache Versión 2.5</title>
+<title>Tutorial de Apache: Contenido Dinámico con CGI - Servidor HTTP Apache Versión 2.5</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" />
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
-<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Tutorial de Apache: Contenido Dinámico con CGI</h1>
+<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Tutorial de Apache: Contenido Dinámico con CGI</h1>
<div class="toplang">
<p><span>Idiomas disponibles: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English"> en </a> |
-<a href="../es/howto/cgi.html" title="Español"> es </a> |
-<a href="../fr/howto/cgi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
+<a href="../es/howto/cgi.html" title="Español"> es </a> |
+<a href="../fr/howto/cgi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/howto/cgi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</div>
</div>
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#intro">Introducción</a></li>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#intro">Introducció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">¡Pero todavía no funciona!</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#behindscenes">¿Qué ocurre entre bastidores?</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#libraries">Módulos/librerías CGI</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#moreinfo">Para más información</a></li>
-</ul><h3>Consulte también</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">¡Pero todavía no funciona!</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#behindscenes">¿Qué ocurre entre bastidores?</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#libraries">Módulos/librerías CGI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#moreinfo">Para más información</a></li>
+</ul><h3>Consulte tambié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ón</a></h2>
+<h2><a name="intro" id="intro">Introducción</a></h2>
- <table class="related"><tr><th>Mó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>
+ <table class="related"><tr><th>Mó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étodo por el cual
+ <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>
+ 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>
</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á configurar Apache para que permita la ejecución de CGI. Hay
+ deberá configurar Apache para que permita la ejecución de CGI. Hay
distintas formas de hacerlo.</p>
<div class="warning">Nota: Si Apache ha sido compilado con soporte
- de módulos compartidos, necesitará que el módulo de CGI esté cargado;
+ 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
<code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>
- no ha sido comentada. Una directiva configurada correctamente sería así:
+ no ha sido comentada. Una directiva configurada correctamente sería así:
<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ía definirse así:
+ directiva configurada correctamente podría definirse así:
<pre class="prettyprint lang-config">LoadModule cgi_module modules/mod_cgi.so</pre>
</div>
<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íficamente
- para programas CGI. Apache asumirá que cada fichero en este
- directorio es un programa CGI, e intentará ejecutarlos cuando un
+ 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
<code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> se puede
- definir así:</p>
+ definir así:</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ón
- <code>httpd.conf</code> por defecto si usted instaló Apache
- en la ubicación por defecto. La directiva
+ <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
<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>,
- ésta define un prefijo de URL que se enlaza a un directorio
+ é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á considerado un programa CGI. Así,
- el ejemplo de más arriba le indica a Apache que
+ 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
+ <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
+ 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á
+ y dar el resultado de una manera específica o Apache devolverá
un mensaje de error.</p>
<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ás segura quien puede ejecutar programas CGI. Aun así, si no
- se toman suficientes precauciones, no hay ninguna razón por la que
+ 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
+ manera arbitraria. Por ejemplo, quizá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án ser capaces de
- ejecutar sus scripts CGI en algún otro sitio.</p>
+ 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
+ <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
<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ámetro
+ <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code>. Segundo, el pará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ícita para permitir ejecución de
+ <h3><a name="options" id="options">Usando Options de manera explícita para permitir ejecució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ón principal para especificar que se permite la ejecución
+ configuración principal para especificar que se permite la ejecución
de CGI en un directorio en particular:</p>
<pre class="prettyprint lang-config"><Directory "/usr/local/apache2/htdocs/somedir">
</Directory></pre>
- <p>Esta directiva de aquí arriba le indica a Apache que debe
- permitir la ejecución de archivos CGI. También necesitará indicarle
+ <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
<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ón
+ servidor que debe tratar a todos los archivos con la extensión
<code>cgi</code> o <code>pl</code> como programas CGI:</p>
<pre class="prettyprint lang-config">AddHandler cgi-script .cgi .pl</pre>
<p>El <a href="htaccess.html">tutorial <code>.htaccess</code></a>
- enseña como activar programas CGI si no tienes acceso a
+ enseñ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ón de programas CGI para cualquier
+ <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>
+ puedes usar la siguiente configuración:</p>
<pre class="prettyprint lang-config"><Directory "/home/*/public_html">
Options +ExecCGI
<p>Si quiere designar un subdirectorio <code>cgi-bin</code> dentro
- de un directorio de usuario en el que todos los ficheros serán
+ de un directorio de usuario en el que todos los ficheros serán
tratados como un programa CGI, puede usar lo siguiente:</p>
<pre class="prettyprint lang-config"><Directory "/home/*/public_html/cgi-bin">
<h2><a name="writing" id="writing">Escribiendo un programa CGI</a></h2>
- <p>Hay dos diferencias principales entre programación ``regular'' y
- programación en CGI.</p>
+ <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 <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á
- recibiendo. La mayor parte de las veces, ésto será algo como:</p>
+ cabecera HTTP le indica al cliente que tipo de contenido está
+ recibiendo. La mayor parte de las veces, ésto será algo como:</p>
<div class="example"><p><code>
Content-type: text/html
<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
+ 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.
+ parecerá 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ó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>
+ <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>
<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á 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
+ <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>
+ direcció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á 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
+ <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>
</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">¡Pero todavía no funciona!</a></h2>
+<h2><a name="troubleshoot" id="troubleshoot">¡Pero todavía no funciona!</a></h2>
- <p>Hay 4 cosas básicas que puede llegar a ver en su navegador cuando
+ <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
+ <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, 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
+ <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
+ apropiada para interpretar su programa CGI. Relea la sección
de <a href="#configuring">Configurando Apache</a> e intente
- encontrar qué le falta.</dd>
+ 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
+ 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
+ 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
+ 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>
<p>Recuerde que el servidor no se ejecuta con su usuario. Es decir,
- cuando el servidor arranca, está funcionando con un usuario sin
+ 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
+ <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>
<div class="example"><p><code>
chmod a+x first.pl
</code></p></div>
- <p>Además, si su programa lee desde o escribe a cualquier otro/s
- archivo/s, esos archivos necesitarán tener los permisos correctos
+ <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>
- <h3><a name="pathinformation" id="pathinformation">Información de Ruta y Entorno</a></h3>
+ <h3><a name="pathinformation" id="pathinformation">Información de Ruta y Entorno</a></h3>
- <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
+ <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
+ 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
+ <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
+ 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>
+ <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>
<pre class="prettyprint lang-perl">#!/usr/bin/perl</pre>
- <p>Asegúrese de que éste es de hecho el path de su intérprete.</p>
+ <p>Asegúrese de que éste es de hecho el path de su intérprete.</p>
<div class="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
+ 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.
+ 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.
</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ándar, necesitará
+ <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
+ <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>
+ 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>
<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,
+ 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>
<div class="example"><p><code>
./first.pl
</code></p></div>
- <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>(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
+ 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>
+ <a href="#writing">Escribiendo un programa CGI</a> más arriba para
+ má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á
- 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>
+ <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>
<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ón de permisos muy estricta,
- y cualquier fallo en esa comprobación dará como resultado un error
+ 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
+ <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
- <code class="program"><a href="../programs/suexec.html">suexec</a></code> al arrancar, suexec se activará.</p>
+ <code class="program"><a href="../programs/suexec.html">suexec</a></code> al arrancar, suexec se activará.</p>
- <p>A menos que comprenda suxec perfectamente, no debería usarlo.
+ <p>A menos que comprenda suxec perfectamente, no deberí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é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>
+ 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>
</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">¿Qué ocurre entre bastidores?</a></h2>
+<h2><a name="behindscenes" id="behindscenes">¿Qué ocurre entre bastidores?</a></h2>
- <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
+ <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>
<h3><a name="env" id="env">Variables de Entorno</a></h3>
- <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
+ <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
+ 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
+ <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>
+ 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
+ <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
+ <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
+ 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>
+ <a href="../env.html">añadir sus variables de entorno</a> a las
+ básicas que se proveen por defecto.</p>
<pre class="prettyprint lang-perl">#!/usr/bin/perl
use strict;
<h3><a name="stdin" id="stdin">STDIN y STDOUT</a></h3>
- <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,
+ <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>
+ 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
+ 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 (&).
+ se asocian juntos con el ampersand ó et en español (&).
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>
+ completo será algo como:</p>
<div class="example"><p><code>
name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey
</code></p></div>
- <p>A veces tendrá este tipo de cadena de caracteres al final de una
+ <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
+ 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
+ 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>
</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ódulos/librerías CGI</a></h2>
+<h2><a name="libraries" id="libraries">Módulos/librerías CGI</a></h2>
- <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>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
+ <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>
+ 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
+ <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>
</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ás información</a></h2>
+<h2><a name="moreinfo" id="moreinfo">Para más información</a></h2>
- <p>La especificación actual de CGI está disponible en el
+ <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>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>
+ <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>
</div></div>
<div class="bottomlang">
<p><span>Idiomas disponibles: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English"> en </a> |
-<a href="../es/howto/cgi.html" title="Español"> es </a> |
-<a href="../fr/howto/cgi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
+<a href="../es/howto/cgi.html" title="Español"> es </a> |
+<a href="../fr/howto/cgi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/howto/cgi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean"> ko </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&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>
}
})(window, document);
//--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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[//><!--
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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();
}
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
-<title>Tutorial del Servidor Apache HTTP: Ficheros .htaccess - Servidor HTTP Apache Versión 2.5</title>
+<title>Tutorial del Servidor Apache HTTP: Ficheros .htaccess - Servidor HTTP Apache Versión 2.5</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" />
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
-<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Tutorial del Servidor Apache HTTP: Ficheros .htaccess</h1>
+<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <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"> en </a> |
-<a href="../es/howto/htaccess.html" title="Español"> es </a> |
-<a href="../fr/howto/htaccess.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
+<a href="../es/howto/htaccess.html" title="Español"> es </a> |
+<a href="../fr/howto/htaccess.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
-<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)"> pt-br </a></p>
+<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)"> pt-br </a></p>
</div>
<p>Los ficheros <code>.htaccess</code> facilitan una forma de realizar
- cambios en la configuración en contexto directorio.</p>
+ cambios en la configuración en contexto directorio.</p>
</div>
<div id="quickview"><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é son/Cómo usarlos</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#what">Qué son/Có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ón</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#auth">Ejemplo de Autenticació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ón de problemas</a></li>
-</ul><h3>Consulte también</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
+<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Resolución de problemas</a></li>
+</ul><h3>Consulte tambié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ó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>
+ <table class="related"><tr><th>Mó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ía evitar usar ficheros <code>.htaccess</code> completamente si
- tiene acceso al fichero de configuración principal de httpd. Usar ficheros
+ <div class="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
- <code class="directive"><a href="../mod/core.html#directory">Directory</a></code>, tendrá el mismo efecto y
+ estará mejor configurada dentro de una sección
+ <code class="directive"><a href="../mod/core.html#directory">Directory</a></code>, tendrá 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é son/Cómo usarlos</a></h2>
+<h2><a name="what" id="what">Qué son/Cómo usarlos</a></h2>
- <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
+ <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>
<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ón de su servidor:</p>
+ en el fichero de configuració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áxis
- que los <a href="../configuring.html#syntax">ficheros de la configuración
+ <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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Esta directiva
- especifica, en categorías, qué directivas tendrán efecto si se encuentran en
+ 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
+ <code>.htaccess</code>, la documentación para esa directiva contendrá una
+ sección Override, especificando qué 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ón la directiva <code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code>, 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
+ <p>Por ejemplo, si busca en la documentación la directiva <code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code>, 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>
</tr>
</table></div>
- <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>
+ <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>
</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í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
+ <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
<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ó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
+ 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>
+ 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
+ <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
+ 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
+ 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
+ <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 <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> en el fichero de configuración
+ en una sección <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> 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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
- 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
+ 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,
+ <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
+ 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>
<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
+ 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 <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ón del
+ 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
+ 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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>, e invíteles
- a revisar la documentación relacionada, lo cual le ahorrará
- bastantes confusiones más adelante.</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 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>, 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
+ con una directiva, y poner la misma directiva en una sección
Directory <code><Directory "/www/htdocs/example"></code> en su
- configuración principal del servidor:</p>
+ configuración principal del servidor:</p>
<p>Fichero <code>.htaccess</code> en <code>/www/htdocs/example</code>:</p>
<code>/www/htdocs/example</code></h3><pre class="prettyprint lang-config">AddType text/example ".exm"</pre>
</div>
- <div class="example"><h3>Sección de su fichero <code>httpd.conf</code></h3><pre class="prettyprint lang-config"><Directory "/www/htdocs/example">
+ <div class="example"><h3>Sección de su fichero <code>httpd.conf</code></h3><pre class="prettyprint lang-config"><Directory "/www/htdocs/example">
AddType text/example ".exm"
</Directory></pre>
</div>
- <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
+ <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
<div class="section">
<h2><a name="how" id="how">How directives are applied</a></h2>
- <p>Las directivas de configuración que se encuentran en el fichero
+ <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
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>
+ 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>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
+ <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>
<h3><a name="merge" id="merge">Incorporando el .htaccess en los ficheros de
- configuración principal</a></h3>
+ configuración principal</a></h3>
- <p>Como se ha comentado en la documentación en las <a href="../sections.html">Secciones de Configuración</a>, los ficheros
+ <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 <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> 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
+ 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
+ de una configuración laxa de
<code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Por ejemplo, para
- prevenir la ejecución de un script mientras se permite cualquier otra cosa
+ prevenir la ejecución de un script mientras se permite cualquier otra cosa
en <code>.htaccess</code> puede usar:</p>
<pre class="prettyprint lang-config"><Directory "/www/htdocs">
</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ón</a></h2>
+<h2><a name="auth" id="auth">Ejemplo de Autenticación</a></h2>
- <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
+ <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
<code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>, 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>
+ 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>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>
<p>Tenga en cuenta que <code>AllowOverride AuthConfig</code> debe estar
- habilitado para que estas directivas tengan algún efecto.</p>
+ 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>
+ <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>
</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ún de ficheros <code>.htaccess</code> es activar Server Side
+ <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
+ con las siguientes directivas de configuración, colocadas en un fichero
<code>.htaccess</code> y el directorio deseado:</p>
<pre class="prettyprint lang-config">Options +Includes
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>
+ explicación má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ón de URI
+ relativas al directorio actual, en lugar de serlo de la petició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íz
+# En .htaccess en el directorio raíz
RewriteRule "^images/(.+)\.jpg" "images/$1.png"
# En .htaccess en images/
<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én de este valor.
- Así, su expresión regular necesita omitir también esa parte.</p>
+ <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>
+ <p>Consulte la <a href="../rewrite/">documentación de mod_rewrite</a> para
+ má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ón de programas CGI en un directorio en particular. Esto
- se puede implementar con la siguiente configuración:</p>
+ permitir la ejecución de programas CGI en un directorio en particular. Esto
+ se puede implementar con la siguiente configuració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ón:</p>
+ configuración:</p>
<pre class="prettyprint lang-config">Options +ExecCGI
SetHandler cgi-script</pre>
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>
+ sobre programación y configuració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ón de problemas</a></h2>
+<h2><a name="troubleshoot" id="troubleshoot">Resolució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ás común es que <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride
- </a></code> 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.
+ <p>El problema más común es que <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride
+ </a></code> 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á
+ que la directiva en uso en su fichero <code>.htaccess</code> no está
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á que o bien ha usado una directiva que no se permite nunca
+ <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
<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ón para esa directiva en particular para determinar cual es el
+ 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
[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ía ser específico para el error de
+ <p>En este caso, el mensaje de error debería ser especí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"> en </a> |
-<a href="../es/howto/htaccess.html" title="Español"> es </a> |
-<a href="../fr/howto/htaccess.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
+<a href="../es/howto/htaccess.html" title="Español"> es </a> |
+<a href="../fr/howto/htaccess.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
-<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)"> pt-br </a></p>
+<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)"> pt-br </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&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';
}
})(window, document);
//--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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[//><!--
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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();
}
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
-<title>Guía HTTP/2 - Servidor HTTP Apache Versión 2.5</title>
+<title>Guía HTTP/2 - Servidor HTTP Apache Versión 2.5</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" />
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
-<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Guía HTTP/2</h1>
+<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Guía HTTP/2</h1>
<div class="toplang">
<p><span>Idiomas disponibles: </span><a href="../en/howto/http2.html" hreflang="en" rel="alternate" title="English"> en </a> |
-<a href="../es/howto/http2.html" title="Español"> es </a> |
-<a href="../fr/howto/http2.html" hreflang="fr" rel="alternate" title="Français"> fr </a></p>
+<a href="../es/howto/http2.html" title="Español"> es </a> |
+<a href="../fr/howto/http2.html" hreflang="fr" rel="alternate" title="Français"> fr </a></p>
</div>
- <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
+ <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>
</div>
<div id="quickview"><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ón básica</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#mpm-config">Configuración MPM</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#basic-config">Configuración básica</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#mpm-config">Configuració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 útiles para depurar HTTP/2</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#tools">Herramientas ú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é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>
+</ul><h3>Consulte tambié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ó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>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
+ <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>
+ (<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
+ 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>
+ ¡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
+ <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>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>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>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>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>
+ <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>
</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ó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>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>
+ <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>
</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í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><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=<path></code>' para <code>./configure</code>.</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=<path></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>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>
+ <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>
</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ón básica</a></h2>
+<h2><a name="basic-config" id="basic-config">Configuración básica</a></h2>
- <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>
+ <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>
<pre class="prettyprint lang-config">LoadModule http2_module modules/mod_http2.so</pre>
- <p>La segunda directiva que necesita añadir a la configuración de su servidor es:</p>
+ <p>La segunda directiva que necesita añadir a la configuración de su servidor es:</p>
<pre class="prettyprint lang-config">Protocols h2 http/1.1</pre>
<pre class="prettyprint lang-config">Protocols h2 h2c http/1.1</pre>
- <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>
+ <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>
<pre class="prettyprint lang-config">Protocols http/1.1
<VirtualHost ...>
<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ó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>
+ <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ó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>
</div>
- <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>
+ <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>
<pre class="prettyprint lang-config">Protocols http/1.1 h2</pre>
- <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>
+ <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>
<pre class="prettyprint lang-config">Protocols h2 h2c http/1.1</pre>
- <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>
+ <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>
<pre class="prettyprint lang-config">ProtocolsHonorOrder Off</pre>
- <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>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>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">
+ <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>
</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ón MPM</a></h2>
+<h2><a name="mpm-config" id="mpm-config">Configuración MPM</a></h2>
- <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>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>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><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 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 <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>
+ <p>Si realmente está 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í cómo otros servidores, están listados en la
+ <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>
+ <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>
</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 útiles para depurar HTTP/2</a></h2>
+<h2><a name="tools" id="tools">Herramientas ú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úrese de que su versión soporta HTTP/2 comprobando sus <code>Características</code>:</p>
+ <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>
<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 [...]
<div class="note"><h3>Notas sobre Mac OS homebrew</h3>
brew install curl --with-openssl --with-nghttp2
</div>
- <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>
+ <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>
+ <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>
+ <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>
</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ó. El tono de la conversación es: "Aquí tiene una solicitud que nunca envió y la respuesta llegará pronto..."</p>
+ <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: "Aquí tiene una solicitud que nunca envió y la respuesta llegará pronto..."</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>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 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>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>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>
<pre class="prettyprint lang-config">Link </xxx.css>;rel=preload, </xxx.js>; rel=preload</pre>
- <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>
+ <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>
<pre class="prettyprint lang-config"><Location /xxx.html>
Header add Link "</xxx.css>;rel=preload"
</Location></pre>
- <p>Si quiere usar enlaces con <code>preload</code> sin activar un PUSH, puede usar el parámetro <code>nopush</code>, como en:</p>
+ <p>Si quiere usar enlaces con <code>preload</code> sin activar un PUSH, puede usar el parámetro <code>nopush</code>, como en:</p>
<pre class="prettyprint lang-config">Link </xxx.css>;rel=preload;nopush</pre>
<pre class="prettyprint lang-config">H2Push Off</pre>
- <p>Y hay más:</p>
+ <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>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>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>
+ Accept-Push-Policy</a> en la que un cliente puede, para cada solicitud, definir qué 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"> en </a> |
-<a href="../es/howto/http2.html" title="Español"> es </a> |
-<a href="../fr/howto/http2.html" hreflang="fr" rel="alternate" title="Français"> fr </a></p>
+<a href="../es/howto/http2.html" title="Español"> es </a> |
+<a href="../fr/howto/http2.html" hreflang="fr" rel="alternate" title="Français"> fr </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&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';
}
})(window, document);
//--><!]]></script></div><div id="footer">
-<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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[//><!--
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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();
}
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
-<title>How-To / Tutoriales - Servidor HTTP Apache Versión 2.5</title>
+<title>How-To / Tutoriales - Servidor HTTP Apache Versión 2.5</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" />
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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ón 2.5 del Servidor HTTP Apache</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="../"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
-<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a></div><div id="page-content"><div id="preamble"><h1>How-To / Tutoriales</h1>
+<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a></div><div id="page-content"><div id="preamble"><h1>How-To / Tutoriales</h1>
<div class="toplang">
<p><span>Idiomas disponibles: </span><a href="../en/howto/" hreflang="en" rel="alternate" title="English"> en </a> |
-<a href="../es/howto/" title="Español"> es </a> |
-<a href="../fr/howto/" hreflang="fr" rel="alternate" title="Français"> fr </a> |
+<a href="../es/howto/" title="Español"> es </a> |
+<a href="../fr/howto/" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/howto/" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="../zh-cn/howto/" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p>
<dl>
- <dt>Autenticación y Autorización</dt>
+ <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
+ <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>
+ o a obtener la información que desea tener.</p>
- <p>Ver: <a href="auth.html">Autenticación, Autorización</a></p>
+ <p>Ver: <a href="auth.html">Autenticación, Autorización</a></p>
</dd>
</dl>
</dl>
<dl>
- <dt>Contenido Dinámico con CGI</dt>
+ <dt>Contenido Dinámico con CGI</dt>
<dd>
- <p>El CGI (Common Gateway Interface) es un método por el cual
+ <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
+ 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>
+ <p>Ver: <a href="cgi.html">CGI: Contenido Dinámico</a></p>
</dd>
</dl>
<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
+ 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>
<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>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>
+ <p>Ver: <a href="http2.html">Guía HTTP/2</a></p>
</dd>
</dl>
<dl>
- <dt>Introducción a los SSI</dt>
+ <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>
+ 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>
<dt>Directorios web Por-usuario</dt>
<dd>
- <p>En sistemas con múltiples usuarios, cada usuario puede tener
+ <p>En sistemas con múltiples usuarios, cada usuario puede tener
su directorio "home" compartido usando la directiva
<code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>. Aquellos
que visiten la URL <code>http://example.com/~username/</code>
- obtendrán contenido del directorio del usuario "<code>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">
</dl>
<dl>
- <dt>Guía de Proxy Inverso</dt>
+ <dt>Guía de Proxy Inverso</dt>
<dd>
<p>Apache httpd ofrece muchas posibilidades como proxy inverso. Usando la
- directiva <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> así como
+ directiva <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> así como
<code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code> 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>
+ reconfiguración dinámica en caliente.</p>
- <p>Ver: <a href="reverse_proxy.html">Guía de Proxy Inverso</a></p>
+ <p>Ver: <a href="reverse_proxy.html">Guía de Proxy Inverso</a></p>
</dd>
</dl>
</div></div>
<div class="bottomlang">
<p><span>Idiomas disponibles: </span><a href="../en/howto/" hreflang="en" rel="alternate" title="English"> en </a> |
-<a href="../es/howto/" title="Español"> es </a> |
-<a href="../fr/howto/" hreflang="fr" rel="alternate" title="Français"> fr </a> |
+<a href="../es/howto/" title="Español"> es </a> |
+<a href="../fr/howto/" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/howto/" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="../zh-cn/howto/" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p>
</div><div id="footer">
-<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
-<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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[//><!--
+<p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.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();
}