]> granicus.if.org Git - apache/blob - docs/manual/howto/ssi.html.es.utf8
Fix xml validation error
[apache] / docs / manual / howto / ssi.html.es.utf8
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
4 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
10 <title>Tutorial de Apache httpd: Introducción a los Server Side Includes
11  - Servidor HTTP Apache Versión 2.5</title>
12 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
13 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
14 <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" />
15 <script src="../style/scripts/prettify.min.js" type="text/javascript">
16 </script>
17
18 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
19 <body id="manual-page"><div id="page-header">
20 <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>
21 <p class="apache">Versión 2.5 del Servidor HTTP Apache</p>
22 <img alt="" src="../images/feather.png" /></div>
23 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
24 <div id="path">
25 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentación</a> &gt; <a href="../">Versión 2.5</a> &gt; <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Tutorial de Apache httpd: Introducción a los Server Side Includes
26 </h1>
27 <div class="toplang">
28 <p><span>Idiomas disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
29 <a href="../es/howto/ssi.html" title="Español">&nbsp;es&nbsp;</a> |
30 <a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
31 <a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
32 <a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
33 </div>
34
35 <p>Los Server Side Includes (Inclusiones en la parte Servidor) facilitan un método para añadir contenido dinámico a documentos HTML existentes.</p>
36 </div>
37 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Introducción</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#what">¿Qué son los SSI?</a></li>
39 <li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configurar su servidor para permitir SSI</a></li>
40 <li><img alt="" src="../images/down.gif" /> <a href="#basic">Directivas SSI básicas</a></li>
41 <li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">Más ejemplos</a></li>
42 <li><img alt="" src="../images/down.gif" /> <a href="#config">¿Qué más puedo configurar?</a></li>
43 <li><img alt="" src="../images/down.gif" /> <a href="#exec">Ejecutando comandos</a></li>
44 <li><img alt="" src="../images/down.gif" /> <a href="#advanced">Técnicas avanzadas de SSI</a></li>
45 <li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Conclusión</a></li>
46 </ul><h3>Consulte también</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
47 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
48 <div class="section">
49 <h2><a name="related" id="related">Introducción</a><a title="Enlace permanente" href="#related" class="permalink">&para;</a></h2>
50  <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_include.html">mod_include</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_expires.html">mod_expires</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code></li><li><code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code></li><li><code class="directive"><a href="../mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li></ul></td></tr></table>
51
52     <p>Este artículo trata sobre los Server Side Includes, generalmente llamados SSI. En este artículo, hablaremos sobre cómo configurar su servidor para permitir SSI e introduciremos algúnas técnicas básicas de SSI para añadir contenido dinámico a sus páginas HTML existentes.</p>
53
54     <p>Más adelante también hablaremos de algunas técnicas algo más avanzadas que pueden usarse con SSI, tales como declaraciones condicionales en sus directivas SSI.</p>
55
56 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
57 <div class="section">
58 <h2><a name="what" id="what">¿Qué son los SSI?</a><a title="Enlace permanente" href="#what" class="permalink">&para;</a></h2>
59
60     <p>SSI (Server Side Includes) son directivas que se introducen en páginas HTML y son evaluadas por el servidor mientras éste las sirve. Le permiten añadir contenido generado de manera dinámica a sus páginas HTML existentes sin tener que servir una página entera a través de un programa CGI, u otra tecnología para generar contenido dinámico.</p>
61
62     <p>Por ejemplo, podría colocar una directiva en una página existente de HTML de esta manera:</p>
63
64     <div class="example"><p><code>
65     &lt;!--#echo var="DATE_LOCAL" --&gt;
66     </code></p></div>
67
68     <p>Y, cuando se sirve la página, este fragmento será evaluado y reemplazado con su resultado:</p>
69
70     <div class="example"><p><code>
71     Tuesday, 15-Jan-2013 19:28:54 EST
72     </code></p></div>
73
74     <p>La decisión sobre cuándo usar SSI, o de cuándo generar una página al completo con algún programa, suele depender generalmente de la cantidad de contenido estático que contiene, y cuánto de esa página tiene que ser recalculado cada vez que ésta se sirve. SSI es un buen método para añadir pequeñas partes de información, tales como la hora actual - como se ha mostrado más arriba. Pero si la mayoría de su página se tiene que generar en el momento en el que se está sirviendo, necesita buscar otra opción más adecuada que no sea SSI.</p>
75 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
76 <div class="section">
77 <h2><a name="configuring" id="configuring">Configurar su servidor para permitir SSI</a><a title="Enlace permanente" href="#configuring" class="permalink">&para;</a></h2>
78
79
80     <p>Para permitir SSI en su servidor, debe tener la siguiente directiva en su fichero <code>httpd.conf</code> , o en un fichero 
81     <code>.htaccess</code>:</p>
82
83 <pre class="prettyprint lang-config">Options +Includes</pre>
84
85
86     <p>Esto le dice a Apache que quiere permitir que se examinen los ficheros buscando directivas SSI. Tenga en cuenta que la mayoría de las configuraciones contienen múltiples directivas <code class="directive"><a href="../mod/core.html#options">Options</a></code> que pueden sobreescribirse las unas a las otras. Probablemente necesitará aplicar <code>Options</code> al directorio específico donde quiere SSI activado para asegurarse de que se evalúa en último lugar y por tanto se acabará aplicando.</p>
87
88     <p>No se examina cualquier fichero buscando directivas SSI. Usted le tiene que indicar a Apache qué ficheros se tienen que examinar. Hay dos formas de hacer esto. Puede decirle a Apache que examine cualquier fichero con una extensión determinada, como por ejemplo <code>.shtml</code>, con las siguientes directivas:</p>
89
90 <pre class="prettyprint lang-config">AddType text/html .shtml
91 AddOutputFilter INCLUDES .shtml</pre>
92
93
94     <p>Una desventaja de este método es que si quisiera añadir directivas SSI a una página ya existente, tendría que cambiar el nombre de la página, y todos los enlaces que apuntasen a esa página, todo para poder darle la extensión <code>.shtml</code> y que esas directivas sean interpretadas.</p>
95
96     <p>El otro método es usar la directiva <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> :</p>
97
98 <pre class="prettyprint lang-config">XBitHack on</pre>
99
100
101     <p><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> le dice a Apache que examine ficheros buscando directivas SSI si los ficheros tienen el bit de ejecución configurado. Asi que, para añadir directivas SSI a una página existente, en lugar de tener que cambiarle el nombre, solo tendría que convertirla en ejecutable usando <code>chmod</code>.</p>
102
103 <div class="example"><p><code>
104         chmod +x pagename.html
105 </code></p></div>
106
107     <p>Una breve recomendación de qué no hay que hacer. Ocasionalmente vemos gente recomendar que le diga a Apache que examine todos los ficheros 
108     <code>.html</code> para activar SSI, para no tener que lidiar renombrando los ficheros a <code>.shtml</code>. Quizás estas personas no hayan oido hablar de <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>. Lo que hay que tener en cuenta, es que haciendo eso, está pidiendo al Apache que lea cada uno de los ficheros que manda al cliente, incluso si no contenien directivas SSI. Esto puede ralentizar bastante el servidor, y no es una buena idea.</p>
109
110     <p>Por supuesto, en Windows, no hay tal cosa como la configuración del bit de ejecución, así que esto limita las opciones un poco.</p>
111
112     <p>En su configuración por defecto, Apache no envía la fecha de última modificación o la longitud de contenido de páginas SSI porque es dificil calcular estos valores para contenido dinámico. Esto puede impedir que se cachee un documento, y dar como resultado en apareciencia un rendimiento más lento del cliente. Hay dos maneras de solucionar esto:</p>
113
114     <ol>
115       <li>Usando la configuración <code>XBitHack Full</code>. Esto le indica a apache que determine la fecha de última modificación mirando sólo la fecha del fichero que se ha solicitado originalmente, obviando la modificación de cualquier otro fichero al que se hace referencia mediante SSI.</li>
116
117       <li>Use las directivas facilitadas por <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> para configurar una expiración específica de tiempo en sus ficheros, y así hacer saber a proxies o navegadores web que es aceptable cachearlos.</li>
118     </ol>
119 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
120 <div class="section">
121 <h2><a name="basic" id="basic">Directivas SSI básicas</a><a title="Enlace permanente" href="#basic" class="permalink">&para;</a></h2>
122
123     <p>Las directivas SSI tienen la sintaxis siguiente:</p>
124 <div class="example"><p><code>
125         &lt;!--#function attribute=value attribute=value ... --&gt;
126 </code></p></div>
127
128     <p>Se formatean como comentarios HTML, así si no tiene SSI habilitado correctamente, el navegador las obviará, pero todavía serán visibles en el fichero HTML. Si tiene SSI configurado correctamente, la directiva será reemplazada con su propio resultado.</p>
129
130     <p>Esta función es una de tantas, y hablaremos de algunas de ellas más adelante. Por ahora, aquí mostramos unos ejemplos de lo que puede hacer con SSI.</p>
131
132 <h3><a name="todaysdate" id="todaysdate">La fecha de hoy</a></h3>
133
134 <div class="example"><p><code>
135         &lt;!--#echo var="DATE_LOCAL" --&gt;
136 </code></p></div>
137
138     <p>La función <code>echo</code> sencillamente muestra el valor de una variable. Hay muchas variables estándar que incluyen un conjunto de variables de entorno disponibles para programas CGI. También puede definir sus propias variables con la función <code>set</code>.</p>
139
140     <p>Si no le gusta el formato en el que se imprime la fecha, puede usar la función <code>config</code>, con un atributo
141     <code>timefmt</code> para modificar ese formato.</p>
142
143 <div class="example"><p><code>
144         &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
145         Today is &lt;!--#echo var="DATE_LOCAL" --&gt;
146 </code></p></div>
147
148
149 <h3><a name="lastmodified" id="lastmodified">Fecha de modificación del fichero</a></h3>
150
151 <div class="example"><p><code>
152         La última modificación de este documento &lt;!--#flastmod file="index.html" --&gt;
153 </code></p></div>
154
155     <p>Esta función también está sujeta a configuraciones de formato de 
156         <code>timefmt</code>.</p>
157
158
159 <h3><a name="cgi" id="cgi">Incluyendo los resultados de un programa CGI</a></h3>
160
161     <p>Este es uno de los usos más comunes de SSI - para sacar el resultado de un programa CGI, tal y como ocurre con el que fuera el programa favorito de todos, un ``contador de visitas.''</p>
162
163 <div class="example"><p><code>
164         &lt;!--#include virtual="/cgi-bin/counter.pl" --&gt;
165 </code></p></div>
166
167
168 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
169 <div class="section">
170 <h2><a name="additionalexamples" id="additionalexamples">Más ejemplos</a><a title="Enlace permanente" href="#additionalexamples" class="permalink">&para;</a></h2>
171
172
173     <p>A continuación hay algunos ejemplos específicos de cosas que puede hacer con SSI en sus documentos HTML.</p>
174
175 <h3><a name="docmodified" id="docmodified">¿Cuándo fue modificado este documento?</a></h3>
176
177     <p>Antes mencionamos que puede usar SSI para informar al usuario cuando el documento ha sido modificado por última vez. Aun así, el método actual para hacerlo se dejó en cuestión. El código que se muestra a continuación, puesto en un documento HTML, pondrá ese sello de tiempo en su página. Por descontado, tendrá que tener SSI habilitado correctamente, como se indicó más arriba.</p>
178 <div class="example"><p><code>
179         &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
180         Ultima modificación de este fichero &lt;!--#flastmod file="ssi.shtml" --&gt;
181 </code></p></div>
182
183     <p>Obviamente, necesitará sustituir el nombre de fichero
184     <code>ssi.shtml</code> con el nombre real del fichero al que usted hace referencia. Esto puede ser inconveniente si solo está buscando un trozo genérico de código que pueda copiar y pegar en cualquier fichero, asi que probablemente necesite usar la variable <code>LAST_MODIFIED</code> en su lugar:</p>
185 <div class="example"><p><code>
186         &lt;!--#config timefmt="%D" --&gt;<br />
187         Última modificación de este fichero &lt;!--#echo var="LAST_MODIFIED" --&gt;
188 </code></p></div>
189
190     <p>Para más detalles sobre el formato <code>timefmt</code>, vaya a su buscador favorito y busque <code>strftime</code>. La sintaxis es la misma.</p>
191
192
193 <h3><a name="standard-footer" id="standard-footer">Incluyendo un pie de página estándar</a></h3>
194
195
196     <p>Si gestiona un sitio que tiene más de unas cuantas páginas, probablemente se de cuenta de que modificar todas esa páginas es un auténtico engorro, especialmente si trata de mantener una apareciencia homogénea en todas ellas.</p>
197
198     <p>Si usa un Include de fichero para la cabecera y/o pie de página puede reducir la carga de trabajo de estas actualizaciones. Solo tiene que hacer un sólo pie de página, y después incluirlo en cada página con el comando SSI <code>include</code>. La función <code>include</code>
199     puede determinar qué fichero incluir cuando usa el atributo
200     <code>file</code>, o el atributo <code>virtual</code>. El atributo <code>file</code> es una ruta de fichero, <em>relativa al directorio actual</em>. Eso significa que no puede ser una ruta de fichero absoluta (que comienza con /), ni tampoco puede contener ../ como parte de la ruta. El atributo <code>virtual</code> es probablemente más útil, y debería especificar una URL relativa al documento que se está sirviendo. Puede empezar con una /, pero debe estar en el mismo servidor que el fichero que se está sirviendo.</p>
201 <div class="example"><p><code>
202         &lt;!--#include virtual="/footer.html" --&gt;
203 </code></p></div>
204
205     <p>Frecuentemente combinaremos las dos últimas, poniendo una directiva
206     <code>LAST_MODIFIED</code> dentro de un fichero de pie de página que va a ser incluido. Se pueden encontrar directivas SSI en el fichero que se incluye, las inclusiones pueden anidarse - lo que quiere decir, que el fichero incluido puede incluir otro fichero, y así sucesivamente.</p>
207
208
209 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
210 <div class="section">
211 <h2><a name="config" id="config">¿Qué más puedo configurar?</a><a title="Enlace permanente" href="#config" class="permalink">&para;</a></h2>
212
213
214     <p>Además de poder configurar el formato de la hora, también puede configurar dos cosas más.</p> 
215
216     <p>Generalmente, cuando algo sale mal con sus directivas SSI, obtiene el mensaje (ha ocurrido un error procesando esta directiva)</p>
217 <div class="example"><p><code>
218         [an error occurred while processing this directive]
219 </code></p></div>
220
221     <p>Si quiere cambiar ese mensaje por otra cosa, puede hacerlo con el atributo <code>errmsg</code> para la función
222     <code>config</code>:</p>
223 <div class="example"><p><code>
224         &lt;!--#config errmsg="[Parece que no sabe cómo usar SSI]" --&gt;
225 </code></p></div>
226
227     <p>Afortunadamente, los usuarios finales nunca verán este mensaje, porque habrá resuelto todos los problemas con sus directivas SSI antes de publicar su página web. (¿Verdad?)</p>
228
229     <p>Y puede configurar el formato en el que los tamaños de fichero se muestran con el formato <code>sizefmt</code>. Puede especificar
230     <code>bytes</code> para un recuento total en bytes, o
231     <code>abbrev</code> para un número abreviado en Kb o Mb, según sea necesario.</p>
232     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
233 <div class="section">
234 <h2><a name="exec" id="exec">Ejecutando comandos</a><a title="Enlace permanente" href="#exec" class="permalink">&para;</a></h2>
235     
236
237     <p>Aquí tiene algo que puede hacer con la función <code>exec</code>. Puede incluso hacer que SSI ejecute un comando usando la shell (<code>/bin/sh</code>, para ser exactos - o la shell DOS, si se encuentra en Win32). Lo siguiente, por ejemplo le dará un listado de directorios. </p>
238 <div class="example"><p><code>
239         &lt;pre&gt;<br />
240         &lt;!--#exec cmd="ls" --&gt;<br />
241         &lt;/pre&gt;
242 </code></p></div>
243
244     <p>o, en Windows</p>
245 <div class="example"><p><code>
246         &lt;pre&gt;<br />
247         &lt;!--#exec cmd="dir" --&gt;<br />
248         &lt;/pre&gt;
249 </code></p></div>
250
251     <p>Notará un formato estraño con esta directiva en Windows, porque el resultado de <code>dir</code> contiene la cadena de caracterers ``&lt;<code>dir</code>&gt;'' ,que confunde a los navegadores.</p>
252
253     <p>Tenga en cuenta de que esta característica es muy peligrosa, puesto que ejecutará cualquier código que esté especificado con la etiqueta 
254     <code>exec</code>. Si tiene una situación en la que los usuarios pueden editar contenido en sus páginas web, tales como por ejemplo un ``registro de visitas'', asegúrese de tener esta característica deshabilitada. Puede permitir SSI, pero no la característica <code>exec</code>, con el argumento <code>IncludesNOEXEC</code> en la directiva <code>Options</code>.</p>
255     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
256 <div class="section">
257 <h2><a name="advanced" id="advanced">Técnicas avanzadas de SSI</a><a title="Enlace permanente" href="#advanced" class="permalink">&para;</a></h2>
258
259
260     <p>Además de mostrar contenido, SSI en Apache da la opción de configurar variables y usar esas variables en comparaciones y condicionales.</p>
261
262 <h3><a name="variables" id="variables">Configurando Variables</a></h3>
263
264     <p>Usando la directiva <code>set</code>, puede configurar variables para su uso posterior. La sintaxis es como sigue:</p>
265 <div class="example"><p><code>
266         &lt;!--#set var="name" value="Rich" --&gt;
267 </code></p></div>
268
269     <p>Además de configurar valores literales como esto, puede usar cualquier otra variable, incluyendo <a href="../env.html">variables de entorno</a> o las variables que se han mencionado antes (como por ejemplo <code>LAST_MODIFIED</code>) para dar valores a sus variables. Podrá especificar que algo es una vaiable, en lugar de una cadena de caracters literal, usando el símbolo del dolar ($) antes del nombre de la variable.</p>
270
271     <div class="example"><p><code> &lt;!--#set var="modified" value="$LAST_MODIFIED" --&gt;
272     </code></p></div>
273
274     <p>Para poner el símbolo del dolar de manera literal en un valor de su variable tendrá que escapar el símbolo del dolar con una barra "\".</p>
275 <div class="example"><p><code>
276         &lt;!--#set var="cost" value="\$100" --&gt;
277 </code></p></div>
278
279     <p>Por último, si quiere poner una variable entre medias de una cadena de caracteres más larga, y se da la coincidencia de que el nombre de la variable se encontrará con otros caracteres, y de esta manera se confundirá con otros caracteres, puedes poner el nombre de la variable entre llaves, y así eliminar la confusión. (Es dificil encontrar un buen ejemplo para esto, pero con éste a lo mejor entiende lo que tratamos de transmitir.)</p>
280 <div class="example"><p><code>
281         &lt;!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --&gt;
282 </code></p></div>
283
284
285 <h3><a name="conditional" id="conditional">Expresiones condicionales</a></h3>
286
287
288     <p>Ahora que tenemos variables, y somos capaces de comparar sus valores, podemos usarlas para expresar condicionales. Esto permite a SSI ser un cierto tipo de lenguaje de programación diminuto.
289     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> provee una estrucura <code>if</code>,
290     <code>elif</code>, <code>else</code>, <code>endif</code>
291     para construir declaraciones condicionales. Esto le permite generar de manera efectiva multitud de páginas lógicas desde tan solo una página.</p>
292
293     <p>La estructura de este sistema condicional es:</p>
294 <div class="example"><p><code>
295     &lt;!--#if expr="test_condition" --&gt;<br />
296     &lt;!--#elif expr="test_condition" --&gt;<br />
297     &lt;!--#else --&gt;<br />
298     &lt;!--#endif --&gt;
299 </code></p></div>
300
301     <p>Una <em>test_condition</em> puede ser cualquier tipo de comparación lógica - o bien comparando valores entre ellos, o probando la ``verdad'' (o falsedad) de un valor en particular. (Una cadena de caracteres cualquiera es verdadera si no está vacía.) Para una lista completa de operadores de comparación, vea la documentación de <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>.</p>
302
303     <p>Por ejemplo, si quiere personalizar el texto en su página web basado en la hora actual, puede usar la siguiente receta, colocada en su página HTML:</p>
304
305     <div class="example"><p><code>
306     Good
307     &lt;!--#if expr="%{TIME_HOUR} &lt;12" --&gt;<br />
308     morning!<br />
309     &lt;!--#else --&gt;<br />
310     afternoon!<br />
311     &lt;!--#endif --&gt;<br />
312     </code></p></div>
313
314     <p>Cualquier otra variable (o bien las que defina usted, o variables de entorno normales) puede usarse en declaraciones condicionales.
315     Vea <a href="../expr.html">Expresiones en el Servidor Apache HTTP</a> para más información sobre el motor de evaluación de expresiones.</p>
316
317     <p>Con la habilidad de Apache de configurar variables de entorno con directivas <code>SetEnvIf</code>, y otras directivas relacionadas,
318     esta funcionalidad puede llevarle a hacer una gran variedad de contenido dinámico en la parte de servidor sin tener que depender de una aplicación web al completo.</p>
319
320 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
321 <div class="section">
322 <h2><a name="conclusion" id="conclusion">Conclusión</a><a title="Enlace permanente" href="#conclusion" class="permalink">&para;</a></h2>
323
324     <p>Desde luego los SSI no son un reemplazo para CGI u otras tecnologías que se usen para generar páginas web dinámicas. Pero es un gran método para añadir pequeñas cantidades de contenido dinámico a páginas web, sin hacer mucho más trabajo extra.</p>
325 </div></div>
326 <div class="bottomlang">
327 <p><span>Idiomas disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
328 <a href="../es/howto/ssi.html" title="Español">&nbsp;es&nbsp;</a> |
329 <a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
330 <a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
331 <a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
332 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comentarios</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
333 <script type="text/javascript"><!--//--><![CDATA[//><!--
334 var comments_shortname = 'httpd';
335 var comments_identifier = 'http://httpd.apache.org/docs/trunk/howto/ssi.html';
336 (function(w, d) {
337     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
338         d.write('<div id="comments_thread"><\/div>');
339         var s = d.createElement('script');
340         s.type = 'text/javascript';
341         s.async = true;
342         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
343         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
344     }
345     else {
346         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
347     }
348 })(window, document);
349 //--><!]]></script></div><div id="footer">
350 <p class="apache">Copyright 2018 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>
351 <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[//><!--
352 if (typeof(prettyPrint) !== 'undefined') {
353     prettyPrint();
354 }
355 //--><!]]></script>
356 </body></html>