diff options
Diffstat (limited to '')
-rw-r--r-- | docs/manual/howto/ssi.html | 21 | ||||
-rw-r--r-- | docs/manual/howto/ssi.html.en | 503 | ||||
-rw-r--r-- | docs/manual/howto/ssi.html.es | 361 | ||||
-rw-r--r-- | docs/manual/howto/ssi.html.fr.utf8 | 518 | ||||
-rw-r--r-- | docs/manual/howto/ssi.html.ja.utf8 | 515 | ||||
-rw-r--r-- | docs/manual/howto/ssi.html.ko.euc-kr | 458 |
6 files changed, 2376 insertions, 0 deletions
diff --git a/docs/manual/howto/ssi.html b/docs/manual/howto/ssi.html new file mode 100644 index 0000000..e3d279f --- /dev/null +++ b/docs/manual/howto/ssi.html @@ -0,0 +1,21 @@ +# GENERATED FROM XML -- DO NOT EDIT + +URI: ssi.html.en +Content-Language: en +Content-type: text/html; charset=UTF-8 + +URI: ssi.html.es +Content-Language: es +Content-type: text/html; charset=ISO-8859-1 + +URI: ssi.html.fr.utf8 +Content-Language: fr +Content-type: text/html; charset=UTF-8 + +URI: ssi.html.ja.utf8 +Content-Language: ja +Content-type: text/html; charset=UTF-8 + +URI: ssi.html.ko.euc-kr +Content-Language: ko +Content-type: text/html; charset=EUC-KR diff --git a/docs/manual/howto/ssi.html.en b/docs/manual/howto/ssi.html.en new file mode 100644 index 0000000..53ea265 --- /dev/null +++ b/docs/manual/howto/ssi.html.en @@ -0,0 +1,503 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>Apache httpd Tutorial: Introduction to Server Side Includes - Apache HTTP Server Version 2.4</title> +<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" /> +<script src="../style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="../images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p> +<p class="apache">Apache HTTP Server Version 2.4</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/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">How-To / Tutorials</a></div><div id="page-content"><div id="preamble"><h1>Apache httpd Tutorial: Introduction to Server Side Includes</h1> +<div class="toplang"> +<p><span>Available Languages: </span><a href="../en/howto/ssi.html" title="English"> en </a> | +<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> +</div> + +<p>Server-side includes provide a means to add dynamic content to +existing HTML documents.</p> +</div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Introduction</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#what">What are SSI?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configuring your server to permit SSI</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#basic">Basic SSI directives</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">Additional examples</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#config">What else can I config?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#exec">Executing commands</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#advanced">Advanced SSI techniques</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Conclusion</a></li> +</ul><h3>See also</h3><ul class="seealso"><li><a href="#comments_section">Comments</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">Introduction</a></h2> + <table class="related"><tr><th>Related Modules</th><th>Related Directives</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> + + <p>This article deals with Server Side Includes, usually called + simply SSI. In this article, I'll talk about configuring your + server to permit SSI, and introduce some basic SSI techniques + for adding dynamic content to your existing HTML pages.</p> + + <p>In the latter part of the article, we'll talk about some of + the somewhat more advanced things that can be done with SSI, + such as conditional statements in your SSI directives.</p> + +</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">What are SSI?</a></h2> + + <p>SSI (Server Side Includes) are directives that are placed in + HTML pages, and evaluated on the server while the pages are + being served. They let you add dynamically generated content to + an existing HTML page, without having to serve the entire page + via a CGI program, or other dynamic technology.</p> + + <p>For example, you might place a directive into an existing HTML + page, such as:</p> + + <div class="example"><p><code> + <!--#echo var="DATE_LOCAL" --> + </code></p></div> + + <p>And, when the page is served, this fragment will be evaluated and replaced with its value:</p> + + <div class="example"><p><code> + Tuesday, 15-Jan-2013 19:28:54 EST + </code></p></div> + + <p>The decision of when to use SSI, and when to have your page + entirely generated by some program, is usually a matter of how + much of the page is static, and how much needs to be + recalculated every time the page is served. SSI is a great way + to add small pieces of information, such as the current time - shown + above. But if a majority of your page is being generated at the time + that it is served, you need to look for some other solution.</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">Configuring your server to permit SSI</a></h2> + + + <p>To permit SSI on your server, you must have the following + directive either in your <code>httpd.conf</code> file, or in a + <code>.htaccess</code> file:</p> +<pre class="prettyprint lang-config">Options +Includes</pre> + + + <p>This tells Apache that you want to permit files to be parsed + for SSI directives. Note that most configurations contain + multiple <code class="directive"><a href="../mod/core.html#options">Options</a></code> directives + that can override each other. You will probably need to apply the + <code>Options</code> to the specific directory where you want SSI + enabled in order to assure that it gets evaluated last.</p> + + <p>Not just any file is parsed for SSI directives. You have to + tell Apache which files should be parsed. There are two ways to + do this. You can tell Apache to parse any file with a + particular file extension, such as <code>.shtml</code>, with + the following directives:</p> +<pre class="prettyprint lang-config">AddType text/html .shtml +AddOutputFilter INCLUDES .shtml</pre> + + + <p>One disadvantage to this approach is that if you wanted to + add SSI directives to an existing page, you would have to + change the name of that page, and all links to that page, in + order to give it a <code>.shtml</code> extension, so that those + directives would be executed.</p> + + <p>The other method is to use the <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> directive:</p> +<pre class="prettyprint lang-config">XBitHack on</pre> + + + <p><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> + tells Apache to parse files for SSI + directives if they have the execute bit set. So, to add SSI + directives to an existing page, rather than having to change + the file name, you would just need to make the file executable + using <code>chmod</code>.</p> +<div class="example"><p><code> + chmod +x pagename.html +</code></p></div> + + <p>A brief comment about what not to do. You'll occasionally + see people recommending that you just tell Apache to parse all + <code>.html</code> files for SSI, so that you don't have to + mess with <code>.shtml</code> file names. These folks have + perhaps not heard about <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>. The thing to + keep in mind is that, by doing this, you're requiring that + Apache read through every single file that it sends out to + clients, even if they don't contain any SSI directives. This + can slow things down quite a bit, and is not a good idea.</p> + + <p>Of course, on Windows, there is no such thing as an execute + bit to set, so that limits your options a little.</p> + + <p>In its default configuration, Apache does not send the last + modified date or content length HTTP headers on SSI pages, + because these values are difficult to calculate for dynamic + content. This can prevent your document from being cached, and + result in slower perceived client performance. There are two + ways to solve this:</p> + + <ol> + <li>Use the <code>XBitHack Full</code> configuration. This + tells Apache to determine the last modified date by looking + only at the date of the originally requested file, ignoring + the modification date of any included files.</li> + + <li>Use the directives provided by + <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> to set an explicit expiration + time on your files, thereby letting browsers and proxies + know that it is acceptable to cache them.</li> + </ol> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="basic" id="basic">Basic SSI directives</a></h2> + + <p>SSI directives have the following syntax:</p> +<div class="example"><p><code> + <!--#function attribute=value attribute=value ... --> +</code></p></div> + + <p>It is formatted like an HTML comment, so if you don't have + SSI correctly enabled, the browser will ignore it, but it will + still be visible in the HTML source. If you have SSI correctly + configured, the directive will be replaced with its + results.</p> + + <p>The function can be one of a number of things, and we'll talk + some more about most of these in the next installment of this + series. For now, here are some examples of what you can do with + SSI</p> + +<h3><a name="todaysdate" id="todaysdate">Today's date</a></h3> + +<div class="example"><p><code> + <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + <p>The <code>echo</code> function just spits out the value of a + variable. There are a number of standard variables, which + include the whole set of environment variables that are + available to CGI programs. Also, you can define your own + variables with the <code>set</code> function.</p> + + <p>If you don't like the format in which the date gets printed, + you can use the <code>config</code> function, with a + <code>timefmt</code> attribute, to modify that formatting.</p> + +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + Today is <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + +<h3><a name="lastmodified" id="lastmodified">Modification date of the file</a></h3> + +<div class="example"><p><code> + This document last modified <!--#flastmod file="index.html" --> +</code></p></div> + + <p>This function is also subject to <code>timefmt</code> format + configurations.</p> + + +<h3><a name="cgi" id="cgi">Including the results of a CGI program</a></h3> + + <p>This is one of the more common uses of SSI - to output the + results of a CGI program, such as everybody's favorite, a ``hit + counter.''</p> + +<div class="example"><p><code> + <!--#include virtual="/cgi-bin/counter.pl" --> +</code></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="additionalexamples" id="additionalexamples">Additional examples</a></h2> + + + <p>Following are some specific examples of things you can do in + your HTML documents with SSI.</p> + +<h3><a name="docmodified" id="docmodified">When was this document +modified?</a></h3> + + <p>Earlier, we mentioned that you could use SSI to inform the + user when the document was most recently modified. However, the + actual method for doing that was left somewhat in question. The + following code, placed in your HTML document, will put such a + time stamp on your page. Of course, you will have to have SSI + correctly enabled, as discussed above.</p> +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + This file last modified <!--#flastmod file="ssi.shtml" --> +</code></p></div> + + <p>Of course, you will need to replace the + <code>ssi.shtml</code> with the actual name of the file that + you're referring to. This can be inconvenient if you're just + looking for a generic piece of code that you can paste into any + file, so you probably want to use the + <code>LAST_MODIFIED</code> variable instead:</p> +<div class="example"><p><code> + <!--#config timefmt="%D" --><br /> + This file last modified <!--#echo var="LAST_MODIFIED" --> +</code></p></div> + + <p>For more details on the <code>timefmt</code> format, go to + your favorite search site and look for <code>strftime</code>. The + syntax is the same.</p> + + +<h3><a name="standard-footer" id="standard-footer">Including a standard footer</a></h3> + + + <p>If you are managing any site that is more than a few pages, + you may find that making changes to all those pages can be a + real pain, particularly if you are trying to maintain some kind + of standard look across all those pages.</p> + + <p>Using an include file for a header and/or a footer can + reduce the burden of these updates. You just have to make one + footer file, and then include it into each page with the + <code>include</code> SSI command. The <code>include</code> + function can determine what file to include with either the + <code>file</code> attribute, or the <code>virtual</code> + attribute. The <code>file</code> attribute is a file path, + <em>relative to the current directory</em>. That means that it + cannot be an absolute file path (starting with /), nor can it + contain ../ as part of that path. The <code>virtual</code> + attribute is probably more useful, and should specify a URL + relative to the document being served. It can start with a /, + but must be on the same server as the file being served.</p> +<div class="example"><p><code> + <!--#include virtual="/footer.html" --> +</code></p></div> + + <p>I'll frequently combine the last two things, putting a + <code>LAST_MODIFIED</code> directive inside a footer file to be + included. SSI directives can be contained in the included file, + and includes can be nested - that is, the included file can + include another file, and so on.</p> + + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="config" id="config">What else can I config?</a></h2> + + + <p>In addition to being able to <code>config</code> the time + format, you can also <code>config</code> two other things.</p> + + <p>Usually, when something goes wrong with your SSI directive, + you get the message</p> +<div class="example"><p><code> + [an error occurred while processing this directive] +</code></p></div> + + <p>If you want to change that message to something else, you + can do so with the <code>errmsg</code> attribute to the + <code>config</code> function:</p> +<div class="example"><p><code> + <!--#config errmsg="[It appears that you don't know how to use SSI]" --> +</code></p></div> + + <p>Hopefully, end users will never see this message, because + you will have resolved all the problems with your SSI + directives before your site goes live. (Right?)</p> + + <p>And you can <code>config</code> the format in which file + sizes are returned with the <code>sizefmt</code> attribute. You + can specify <code>bytes</code> for a full count in bytes, or + <code>abbrev</code> for an abbreviated number in Kb or Mb, as + appropriate.</p> + </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="exec" id="exec">Executing commands</a></h2> + + + <p>Here's something else that you can do with the <code>exec</code> + function. You can actually have SSI execute a command using the + shell (<code>/bin/sh</code>, to be precise - or the DOS shell, + if you're on Win32). The following, for example, will give you + a directory listing.</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="ls" --><br /> + </pre> +</code></p></div> + + <p>or, on Windows</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="dir" --><br /> + </pre> +</code></p></div> + + <p>You might notice some strange formatting with this directive + on Windows, because the output from <code>dir</code> contains + the string ``<<code>dir</code>>'' in it, which confuses + browsers.</p> + + <p>Note that this feature is exceedingly dangerous, as it will + execute whatever code happens to be embedded in the + <code>exec</code> tag. If you have any situation where users + can edit content on your web pages, such as with a + ``guestbook'', for example, make sure that you have this + feature disabled. You can allow SSI, but not the + <code>exec</code> feature, with the <code>IncludesNOEXEC</code> + argument to the <code>Options</code> directive.</p> + </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="advanced" id="advanced">Advanced SSI techniques</a></h2> + + + <p>In addition to spitting out content, Apache SSI gives you + the option of setting variables, and using those variables in + comparisons and conditionals.</p> + +<h3><a name="variables" id="variables">Setting variables</a></h3> + + <p>Using the <code>set</code> directive, you can set variables + for later use. We'll need this later in the discussion, so + we'll talk about it here. The syntax of this is as follows:</p> +<div class="example"><p><code> + <!--#set var="name" value="Rich" --> +</code></p></div> + + <p>In addition to merely setting values literally like that, you + can use any other variable, including <a href="../env.html">environment variables</a> or the variables + discussed above (like <code>LAST_MODIFIED</code>, for example) to + give values to your variables. You will specify that something is + a variable, rather than a literal string, by using the dollar sign + ($) before the name of the variable.</p> + + <div class="example"><p><code> <!--#set var="modified" value="$LAST_MODIFIED" --> + </code></p></div> + + <p>To put a literal dollar sign into the value of your + variable, you need to escape the dollar sign with a + backslash.</p> +<div class="example"><p><code> + <!--#set var="cost" value="\$100" --> +</code></p></div> + + <p>Finally, if you want to put a variable in the midst of a + longer string, and there's a chance that the name of the + variable will run up against some other characters, and thus be + confused with those characters, you can place the name of the + variable in braces, to remove this confusion. (It's hard to + come up with a really good example of this, but hopefully + you'll get the point.)</p> +<div class="example"><p><code> + <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> +</code></p></div> + + +<h3><a name="conditional" id="conditional">Conditional expressions</a></h3> + + + <p>Now that we have variables, and are able to set and compare + their values, we can use them to express conditionals. This + lets SSI be a tiny programming language of sorts. + <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> provides an <code>if</code>, + <code>elif</code>, <code>else</code>, <code>endif</code> + structure for building conditional statements. This allows you + to effectively generate multiple logical pages out of one + actual page.</p> + + <p>The structure of this conditional construct is:</p> +<div class="example"><p><code> + <!--#if expr="test_condition" --><br /> + <!--#elif expr="test_condition" --><br /> + <!--#else --><br /> + <!--#endif --> +</code></p></div> + + <p>A <em>test_condition</em> can be any sort of logical + comparison - either comparing values to one another, or testing + the ``truth'' of a particular value. (A given string is true if + it is nonempty.) For a full list of the comparison operators + available to you, see the <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> + documentation.</p> + + <p>For example, if you wish to customize the text on your web page + based on the time of day, you could use the following recipe, placed + in the HTML page:</p> + + <div class="example"><p><code> + Good + <!--#if expr="%{TIME_HOUR} <12" --><br /> + morning!<br /> + <!--#else --><br /> + afternoon!<br /> + <!--#endif --><br /> + </code></p></div> + + <p>Any other variable (either ones that you define, or normal + environment variables) can be used in conditional statements. + See <a href="../expr.html">Expressions in Apache HTTP Server</a> for + more information on the expression evaluation engine.</p> + + <p>With Apache's ability to set environment variables with the + <code>SetEnvIf</code> directives, and other related directives, + this functionality can let you do a wide variety of dynamic content + on the server side without resorting a full web application.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="conclusion" id="conclusion">Conclusion</a></h2> + + <p>SSI is certainly not a replacement for CGI, or other + technologies used for generating dynamic web pages. But it is a + great way to add small amounts of dynamic content to pages, + without doing a lot of extra work.</p> +</div></div> +<div class="bottomlang"> +<p><span>Available Languages: </span><a href="../en/howto/ssi.html" title="English"> en </a> | +<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.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">Comments</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/ssi.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/howto/ssi.html.es b/docs/manual/howto/ssi.html.es new file mode 100644 index 0000000..1b5eebf --- /dev/null +++ b/docs/manual/howto/ssi.html.es @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head> +<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>Tutorial de Apache httpd: Introducción a los Server Side Includes + - Servidor HTTP Apache Versión 2.4</title> +<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" /> +<script src="../style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="../images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p> +<p class="apache">Versión 2.4 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.4</a> > <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 +</h1> +<div class="toplang"> +<p><span>Idiomas disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="../es/howto/ssi.html" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> +</div> + +<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> +</div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Introducción</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#what">¿Qué son los SSI?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configurar su servidor para permitir SSI</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#basic">Directivas SSI básicas</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">Más ejemplos</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#config">¿Qué más puedo configurar?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#exec">Ejecutando comandos</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#advanced">Técnicas avanzadas de SSI</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Conclusió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">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_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> + + <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, + y de técnicas básicas de SSI para añadir contenido dinámico a sus páginas + HTML existentes.</p> + + <p>Más adelante también hablaremos de algunas técnicas más avanzadas que + pueden usarse con SSI, tales como declaraciones condicionales en sus directivas SSI.</p> + +</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 los SSI?</a></h2> + + <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> + + <p>Por ejemplo, podría colocar una directiva en una página existente de HTML + de esta manera:</p> + + <div class="example"><p><code> + <!--#echo var="DATE_LOCAL" --> + </code></p></div> + + <p>Y, cuando se sirve la página, este fragmento será evaluado y sustituido con su resultado:</p> + + <div class="example"><p><code> + Tuesday, 15-Jan-2013 19:28:54 EST + </code></p></div> + + <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> +</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">Configurar su servidor para permitir SSI</a></h2> + + + <p>Para permitir SSI en su servidor, debe tener la siguiente directiva en su fichero <code>httpd.conf</code> , o en un fichero + <code>.htaccess</code>:</p> +<pre class="prettyprint lang-config">Options +Includes</pre> + + + <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> + + <p>No todos los ficheros se examinan 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> +<pre class="prettyprint lang-config">AddType text/html .shtml +AddOutputFilter INCLUDES .shtml</pre> + + + <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> + + <p>El otro método es usar la directiva <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> :</p> +<pre class="prettyprint lang-config">XBitHack on</pre> + + + <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> +<div class="example"><p><code> + chmod +x pagename.html +</code></p></div> + + <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 + <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> + + <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> + + <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> + + <ol> + <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> + + <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> + </ol> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="basic" id="basic">Directivas SSI básicas</a></h2> + + <p>Las directivas SSI tienen la sintaxis siguiente:</p> +<div class="example"><p><code> + <!--#function attribute=value attribute=value ... --> +</code></p></div> + + <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> + + <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> + +<h3><a name="todaysdate" id="todaysdate">La fecha de hoy</a></h3> + +<div class="example"><p><code> + <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + <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> + + <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 + <code>timefmt</code> para modificar ese formato.</p> + +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + Today is <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + +<h3><a name="lastmodified" id="lastmodified">Fecha de modificación del fichero</a></h3> + +<div class="example"><p><code> + La última modificación de este documento <!--#flastmod file="index.html" --> +</code></p></div> + + <p>Esta función también está sujeta a configuraciones de formato de + <code>timefmt</code>.</p> + + +<h3><a name="cgi" id="cgi">Incluyendo los resultados de un programa CGI</a></h3> + + <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> + +<div class="example"><p><code> + <!--#include virtual="/cgi-bin/counter.pl" --> +</code></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="additionalexamples" id="additionalexamples">Más ejemplos</a></h2> + + + <p>A continuación hay algunos ejemplos específicos de cosas que puede hacer con SSI en sus documentos HTML.</p> + +<h3><a name="docmodified" id="docmodified">¿Cuándo fue modificado este documento?</a></h3> + + <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> +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + Ultima modificación de este fichero <!--#flastmod file="ssi.shtml" --> +</code></p></div> + + <p>Obviamente, necesitará sustituir el nombre de fichero + <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> +<div class="example"><p><code> + <!--#config timefmt="%D" --><br /> + Última modificación de este fichero <!--#echo var="LAST_MODIFIED" --> +</code></p></div> + + <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> + + +<h3><a name="standard-footer" id="standard-footer">Incluyendo un pie de página estándar</a></h3> + + + <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> + + <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> + puede determinar qué fichero incluir cuando usa el atributo + <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> +<div class="example"><p><code> + <!--#include virtual="/footer.html" --> +</code></p></div> + + <p>Frecuentemente combinaremos las dos últimas, poniendo una directiva + <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> + + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="config" id="config">¿Qué más puedo configurar?</a></h2> + + + <p>Además de poder configurar el formato de la hora, también puede configurar dos cosas más.</p> + + <p>Generalmente, cuando algo sale mal con sus directivas SSI, obtiene el mensaje (ha ocurrido un error procesando esta directiva)</p> +<div class="example"><p><code> + [an error occurred while processing this directive] +</code></p></div> + + <p>Si quiere cambiar ese mensaje por otra cosa, puede hacerlo con el atributo <code>errmsg</code> para la función + <code>config</code>:</p> +<div class="example"><p><code> + <!--#config errmsg="[Parece que no sabe cómo usar SSI]" --> +</code></p></div> + + <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> + + <p>Y puede configurar el formato en el que los tamaños de fichero se muestran con el formato <code>sizefmt</code>. Puede especificar + <code>bytes</code> para un recuento total en bytes, o + <code>abbrev</code> para un número abreviado en Kb o Mb, según sea necesario.</p> + </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="exec" id="exec">Ejecutando comandos</a></h2> + + + <p> Puede usar la función <code>exec</code> para ejecutar comandos. Y SSI puede ejecutar un comando usando la shell (<code>/bin/sh</code>, para ser más precisos - o la shell de DOS , si está en Win32). Lo siguiente, por ejemplo, le dará un listado de ficheros en un directorio.</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="ls" --><br /> + </pre> +</code></p></div> + + <p>o, en Windows</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="dir" --><br /> + </pre> +</code></p></div> + + <p>Notará un formato estraño con esta directiva en Windows, porque el resultado de <code>dir</code> contiene la cadena de caracterers ``<<code>dir</code>>'' ,que confunde a los navegadores.</p> + + <p>Tenga en cuenta de que esta característica es muy peligrosa, puesto que ejecutará cualquier código que esté especificado con la etiqueta + <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> + </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="advanced" id="advanced">Técnicas avanzadas de SSI</a></h2> + + + <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> + +<h3><a name="variables" id="variables">Configurando Variables</a></h3> + + <p>Usando la directiva <code>set</code>, puede configurar variables para su uso posterior. La sintaxis es como sigue:</p> +<div class="example"><p><code> + <!--#set var="name" value="Rich" --> +</code></p></div> + + <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> + + <div class="example"><p><code> <!--#set var="modified" value="$LAST_MODIFIED" --> + </code></p></div> + + <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> +<div class="example"><p><code> + <!--#set var="cost" value="\$100" --> +</code></p></div> + + <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> +<div class="example"><p><code> + <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> +</code></p></div> + + +<h3><a name="conditional" id="conditional">Expresiones condicionales</a></h3> + + + <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. + <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> provee una estrucura <code>if</code>, + <code>elif</code>, <code>else</code>, <code>endif</code> + para construir declaraciones condicionales. Esto le permite generar de manera efectiva multitud de páginas lógicas desde tan solo una página.</p> + + <p>La estructura de este sistema condicional es:</p> +<div class="example"><p><code> + <!--#if expr="test_condition" --><br /> + <!--#elif expr="test_condition" --><br /> + <!--#else --><br /> + <!--#endif --> +</code></p></div> + + <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> + + <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> + + <div class="example"><p><code> + Good + <!--#if expr="%{TIME_HOUR} <12" --><br /> + morning!<br /> + <!--#else --><br /> + afternoon!<br /> + <!--#endif --><br /> + </code></p></div> + + <p>Cualquier otra variable (o bien las que defina usted, o variables de entorno normales) puede usarse en declaraciones condicionales. + 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> + + <p>Con la habilidad de Apache de configurar variables de entorno con directivas <code>SetEnvIf</code>, y otras directivas relacionadas, + 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> + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="conclusion" id="conclusion">Conclusión</a></h2> + + <p>Desde luego SSI no es 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 cantidaddes de contenido dinámico a páginas web, sin hacer mucho más trabajo extra.</p> +</div></div> +<div class="bottomlang"> +<p><span>Idiomas disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="../es/howto/ssi.html" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/ssi.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 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/directives.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/howto/ssi.html.fr.utf8 b/docs/manual/howto/ssi.html.fr.utf8 new file mode 100644 index 0000000..a5bfcf6 --- /dev/null +++ b/docs/manual/howto/ssi.html.fr.utf8 @@ -0,0 +1,518 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>Tutoriel Apache httpd : Introduction aux "Inclusions Côté Serveur" +(Server Side Includes - SSI) - Serveur HTTP Apache Version 2.4</title> +<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" /> +<script src="../style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="../images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p> +<p class="apache">Serveur HTTP Apache Version 2.4</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/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache httpd : Introduction aux "Inclusions Côté Serveur" +(Server Side Includes - SSI)</h1> +<div class="toplang"> +<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> +</div> + +<p>Les SSI permettent d'ajouter du contenu dynamique à des documents +HTML préexistants.</p> +</div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Introduction</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#what">Qu'est-ce que SSI ?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configurer votre serveur pour permettre les SSI</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#basic">Directives SSI de base</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">Exemples additionnels</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#config">Que puis-je configurer d'autre ?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#exec">Exécution de commandes</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#advanced">Techniques SSI avancées</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Conclusion</a></li> +</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</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">Introduction</a></h2> + <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</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> + + <p>Cet article traite des Inclusions Côté Serveur (Server Side + Includes), plus communément appelés SSI. Vous trouverez ici la + manière de configurer votre serveur pour permettre les SSI, ainsi + qu'une introduction à quelques techniques SSI de base permettant + d'ajouter du contenu dynamique à vos pages HTML préexistantes.</p> + + <p>La dernière partie de cet article sera consacrée aux + configurations SSI plus avancées, telles que les expressions + conditionnelles dans les directives SSI.</p> + +</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'est-ce que SSI ?</a></h2> + + <p>SSI (Server Side Includes) est constitué de directives placées dans + des pages HTML, et évaluées par le serveur au moment où les pages + sont servies. Elles vous permettent d'ajouter du contenu généré + dynamiquement à une page HTML préexistante, sans avoir à servir la + page entière via un programme CGI, ou toute autre technologie de + contenu dynamique.</p> + + <p>Par exemple, vous pouvez insérer la directive suivante dans une + page HTML existante :</p> + + <div class="example"><p><code> + <!--#echo var="DATE_LOCAL" --> + </code></p></div> + + <p>Ainsi, lorsque la page sera servie, la directive sera évaluée et + remplacée par sa valeur :</p> + + <div class="example"><p><code> + Tuesday, 15-Jan-2013 19:28:54 EST + </code></p></div> + + <p>Le choix entre l'utilisation des SSI et la génération entière de + la page par un programme quelconque, est en général dicté par la + proportion de contenu statique et de contenu devant être généré + chaque fois que la page est servie. SSI est idéal pour ajouter de + petites quantités d'information, comme l'heure courante dans + l'exemple précédent. Mais si la + plus grande partie de votre page est générée au moment où elle est + servie, vous devez vous tourner vers une autre solution.</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">Configurer votre serveur pour permettre les SSI</a></h2> + + + <p>Pour permettre l'utilisation des SSI sur votre serveur, vous + devez ajouter la directive suivante dans votre fichier + <code>httpd.conf</code>, ou dans un fichier <code>.htaccess</code> + :</p> +<pre class="prettyprint lang-config">Options +Includes</pre> + + + <p>Cette directive indique à Apache que vous désirez permettre la + recherche de directives SSI lors de l'interprétation des fichiers. + Notez cependant que la plupart des configurations contiennent de + nombreuses directives <code class="directive"><a href="../mod/core.html#options">Options</a></code> + qui peuvent s'écraser les unes les autres. Vous devrez probablement + appliquer ces directives <code>Options</code> au répertoire + spécifique pour lequel vous voulez activer les SSI, afin d'être sûr + qu'elles y seront bien activées.</p> + + <p>Tout fichier ne fera cependant pas l'objet de recherche de + directives SSI. Vous devez indiquer à Apache quels fichiers seront + concernés. Vous pouvez y parvenir en indiquant une extension, comme + <code>.shtml</code>, à l'aide des directives suivantes :</p> +<pre class="prettyprint lang-config">AddType text/html .shtml +AddOutputFilter INCLUDES .shtml</pre> + + + <p>Un des désavantages de cette approche réside dans le fait que si + vous voulez ajouter des directives SSI à une page préexistante, vous + devrez changer le nom de cette page, et donc tout lien qui la + contient, de façon à ce qu'elle possède l'extension + <code>.shtml</code>, condition nécessaire pour que les directives + SSI qu'elle contient soient traitées.</p> + + <p>Une autre méthode consiste à utiliser la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> :</p> +<pre class="prettyprint lang-config">XBitHack on</pre> + + + <p>La directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> + indique à Apache qu'il doit rechercher des directivves SSI dans les + fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus + nécessaire de changer le nom du fichier pour ajouter des directives + SSI à une page préexistante ; vous devez simplement attribuer les + droits d'exécution au fichier à l'aide de <code>chmod</code>.</p> +<div class="example"><p><code> + chmod +x pagename.html +</code></p></div> + + <p>Un bref commentaire sur ce qu'il ne faut pas faire. Certaines + personnes peuvent vous conseiller de tout simplement indiquer à + Apache de rechercher des directives SSI dans tous les fichiers + <code>.html</code>, ce qui vous évite d'avoir à gérer les noms de + fichiers avec extension <code>.shtml</code>. Ils n'ont probablement + pas entendu parler de la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>. En effet, vous devez + garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher + des directives SSI dans chaque fichier qu'il sert, même s'il n'en + contient aucune. Ce n'est donc pas une bonne idée car les + performances peuvent en être sensiblement affectées.</p> + + <p>Bien entendu, sous Windows, il n'y a pas de bit d'exécution à + positionner, ce qui limite un peu vos choix.</p> + + <p>Dans sa configuration par défaut, Apache n'envoie pas la date de + dernière modification ou les en-têtes HTTP relatifs à la taille des + contenus dans les pages SSI, car ses valeurs sont difficiles à + calculer pour les contenus dynamiques. Ceci peut induire une + impression de diminution des performances côté client, en empêchant + la mise en cache de votre document. Il existe deux méthodes pour + résoudre ce problème :</p> + + <ol> + <li>Utilisez la configuration <code>XBitHack Full</code>. Elle + indique à Apache de déterminer la date de dernière modification en + ne regardant que la date du fichier à l'origine de la requête, + tout en ignorant la date de modification de tout fichier inclus.</li> + + <li>Utilisez les directives fournies par le module + <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> pour définir de manière explicite la + date d'expiration de vos fichiers, laissant par la-même + aux navigateurs et aux mandataires le soin de déterminer s'il est + opportun ou non de les mettre en cache.</li> + </ol> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="basic" id="basic">Directives SSI de base</a></h2> + + <p>Les directives SSI adoptent la syntaxe suivante :</p> +<div class="example"><p><code> + <!--#fonction attribut=valeur attribut=valeur ... --> +</code></p></div> + + <p>Le format d'une directive SSI étant similaire à celui d'un + commentaire HTML, si vous n'avez pas activé correctement SSI, le + navigateur l'ignorera, mais elle sera encore visible dans le source + HTML. Si SSI est correctement configuré, la directive sera remplacée + par ses résultats.</p> + + <p>"fonction" peut prendre de nombreuses formes, et nous décrirons + plus précisément la plupart d'entre eux dans la prochaine version de + ce document. Pour le moment, voici quelques exemples de ce que vous + pouvez faire avec SSI.</p> + +<h3><a name="todaysdate" id="todaysdate">La date courante</a></h3> + +<div class="example"><p><code> + <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + <p>La fonction <code>echo</code> permet d'afficher la valeur d'une + variable. Il existe un grand nombre de variables standards, y + compris l'ensemble des variables d'environnement disponibles pour + les programmes CGI. De plus, vous pouvez définir vos propres + variables à l'aide de la fonction <code>set</code>.</p> + + <p>Si vous n'aimez pas le format sous lequel la date s'affiche, vous + pouvez utiliser la fonction <code>config</code> avec un attribut + <code>timefmt</code>, pour le modifier.</p> + +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + Today is <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + +<h3><a name="lastmodified" id="lastmodified">Date de modification du fichier</a></h3> + +<div class="example"><p><code> + Dernière modification du document <!--#flastmod file="index.html" --> +</code></p></div> + + <p>Le format peut là aussi être modifié à l'aide de l'attribut + <code>timefmt</code>.</p> + + +<h3><a name="cgi" id="cgi">Inclusion des résultats d'un programme CGI</a></h3> + + <p>C'est le cas le plus courant d'utilisation des SSI - afficher les + résultats d'un programme CGI, comme l'universellement adoré + "compteur d'accès".</p> + +<div class="example"><p><code> + <!--#include virtual="/cgi-bin/counter.pl" --> +</code></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="additionalexamples" id="additionalexamples">Exemples additionnels</a></h2> + + + <p>Vous trouverez dans ce qui suit quelques exemples spécifiques de + ce que vous pouvez faire de vos documents HTML avec SSI.</p> + +<h3><a name="docmodified" id="docmodified">Quand ce document a-t-il été modifié ?</a></h3> + + <p>Nous avons mentionné plus haut que vous pouviez utiliser SSI pour + informer l'utilisateur de la date de dernière modification du + document. Cependant, la méthode pour y parvenir n'a pas été vraiment + abordée. Placé dans votre document HTML, le code suivant va insérer + un repère de temps dans votre page. Bien entendu, SSI devra avoir + été correctement activé, comme décrit plus haut.</p> +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + Dernière modification du fichier <!--#flastmod file="ssi.shtml" --> +</code></p></div> + + <p>Bien entendu, vous devez remplacer <code>ssi.shtml</code> par le + nom du fichier auquel vous faites référence. Ceci ne conviendra pas + si vous recherchez un morceau de code générique que vous pourrez + insérer dans tout fichier ; dans ce cas, il est préférable + d'utiliser la variable <code>LAST_MODIFIED</code> :</p> +<div class="example"><p><code> + <!--#config timefmt="%D" --><br /> + This file last modified <!--#echo var="LAST_MODIFIED" --> +</code></p></div> + + <p>Pour plus de détails sur le format <code>timefmt</code>, tapez + <code>strftime</code> dans votre moteur de recherche préferé. La + syntaxe est identique.</p> + + +<h3><a name="standard-footer" id="standard-footer">Inclusion d'un pied de page standard</a></h3> + + + <p>Si le site que vous gérez comporte plus que quelques pages, vous + allez vite vous apercevoir qu'effectuer des modifications sur toutes + ces pages peut devenir très contraignant, en particulier si vous + voulez qu'elles conservent un aspect homogène.</p> + + <p>Inclure un fichier pour un en-tête et/ou un pied de page peut + simplifier cette corvée de mises à jour. Il vous suffit de + confectionner un fichier de pied de page, et de l'inclure dans + chaque page à l'aide de l'élément SSI <code>include</code>. Pour + définir le fichier à inclure, la fonction <code>include</code> peut + utiliser soit l'attribut <code>file</code>, soit l'attribut + <code>virtual</code>. L'attribut <code>file</code> est un chemin de + fichier <em>relatif au répertoire courant</em>. C'est à dire qu'il + ne peut ni avoir pour valeur un chemin absolu (commençant par /), ni + comporter "../" dans son chemin. L'attribut <code>virtual</code> est + probablement plus commode, et peut spécifier une URL relative au + document servi. Elle peut commencer par un /, mais le fichier inclus + et le fichier servi doivent résider sur le même serveur.</p> +<div class="example"><p><code> + <!--#include virtual="/footer.html" --> +</code></p></div> + + <p>Je combinerai souvent ces deux derniers points, en ajoutant une + directive <code>LAST_MODIFIED</code> dans un fichier de pied de page + destiné à être inclus. Le fichier inclus peut contenir des + directives SSI, et les inclusions peuvent être imbriquées - à + savoir, le fichier inclus peut inclure un autre fichier, etc...</p> + + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="config" id="config">Que puis-je configurer d'autre ?</a></h2> + + + <p>En plus du format de date, vous pouvez utiliser l'élément + <code>config</code> pour configurer deux autres choses.</p> + + <p>En général, lorsque quelque chose se passe mal avec votre + directive SSI, vous recevez le message :</p> +<div class="example"><p><code> + [an error occurred while processing this directive] +</code></p></div> + + <p>Pour modifier ce message, vous pouvez utiliser l'attribut + <code>errmsg</code> avec la fonction <code>config</code> :</p> +<div class="example"><p><code> + <!--#config errmsg="[Il semblerait que vous ne sachiez pas + utiliser les SSI]" --> +</code></p></div> + + <p>Il est cependant probable que les utilisateurs finaux ne voient + jamais ce message, car vous aurez résolu tous les problèmes issus de + vos directives SSI avant que votre site ne soit mis en production. + (N'est-ce pas ?)</p> + + <p>Vous pouvez aussi modifier le format sous lequel les tailles de + fichiers sont affichées à l'aide de l'attribut <code>sizefmt</code>. + Vous pouvez spécifier <code>bytes</code> pour un affichage en + octets, ou <code>abbrev</code> pour un affichage plus concis en Ko + ou Mo, selon le cas.</p> + </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="exec" id="exec">Exécution de commandes</a></h2> + + + <p>Voici autre chose que vous pouvez faire avec la fonction + <code>exec</code>. Vous pouvez vraiment faire exécuter une commande + par SSI en utilisant le shell (<code>/bin/sh</code>, pour être plus + précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce + qui suit vous permet d'afficher le contenu d'un répertoire.</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="ls" --><br /> + </pre> +</code></p></div> + + <p>ou, sous Windows</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="dir" --><br /> + </pre> +</code></p></div> + + <p>Vous noterez probablement l'étrange formatage provoqué par cette + directive sous Windows, car la sortie de <code>dir</code> contient + la chaîne de caractères "<<code>dir</code>>", ce qui trompe le + navigateur.</p> + + <p>Notez que cette fonctionnalité est très dangereuse, car elle va + permettre d'exécuter tout code associé à l'élément + <code>exec</code>. Si vous êtes dans la situation où les + utilisateurs peuvent éditer le contenu de vos pages web, dans le cas + d'un "livre d'or" par exemple, assurez-vous de désactiver cette + fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver + la fonctionnalité <code>exec</code> à l'aide de l'argument + <code>IncludesNOEXEC</code> de la directive + <code>Options</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="advanced" id="advanced">Techniques SSI avancées</a></h2> + + + <p>Outre l'affichage de contenu, les SSI d'Apache vous permettent de + définir des variables, et de les utiliser dans des comparaisons et + des conditions.</p> + +<h3><a name="variables" id="variables">Définition de variables</a></h3> + + <p>Avec l'élément <code>set</code>, vous pouvez définir des + variables pour un usage ultérieur. Comme nous en aurons besoin plus + loin, nous allons en parler tout de suite. La syntaxe se présente + comme suit :</p> +<div class="example"><p><code> + <!--#set var="name" value="Rich" --> +</code></p></div> + + <p>Pour affecter une valeur à vos variables, en plus de la + définition littérale de l'exemple ci-dessus, vous pouvez utiliser + une autre variable, y compris les <a href="../env.html">variables d'environnement</a>, ou les variables + décrites plus haut (comme <code>LAST_MODIFIED</code> par exemple). + Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous + devez utiliser le symbole dollar ($) devant le nom de la + variable.</p> + + <div class="example"><p><code> <!--#set var="modified" value="$LAST_MODIFIED" --> + </code></p></div> + + <p>Pour insérer un caractère $ dans la valeur de votre variable, + vous devez l'échapper à l'aide d'un backslash.</p> +<div class="example"><p><code> + <!--#set var="cost" value="\$100" --> +</code></p></div> + + <p>Enfin, si vous voulez insérer une variable dans une chaîne, et + s'il y a une chance pour que le nom de la variable se confonde avec + le reste de la chaîne, vous pouvez l'entourer d'accolades pour + eviter toute confusion (Il est difficile de trouver un bon exemple + pour illustrer ceci, mais j'espère que vous comprendrez).</p> +<div class="example"><p><code> + <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> +</code></p></div> + + +<h3><a name="conditional" id="conditional">Expressions conditionnelles</a></h3> + + + <p>Maintenent que nous avons des variables, et que nous pouvons + définir et comparer leurs valeurs, nous sommes à même de les + utiliser dans des expressions conditionnelles. Ceci confère à SSI le + statut de petit langage de programmation. + <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> fournit une structure <code>if</code>, + <code>elif</code>, <code>else</code>, <code>endif</code> pour la + construction d'expressions conditionnelles, ce qui vous permet de + générer plusieurs pages logiques à partir d'une seule vraie + page.</p> + + <p>La structure de l'expression conditionnelle est :</p> +<div class="example"><p><code> + <!--#if expr="condition" --><br /> + <!--#elif expr="condition" --><br /> + <!--#else --><br /> + <!--#endif --> +</code></p></div> + + <p>Une <em>condition</em> peut revêtir la forme de toute comparaison + logique - soit une comparaison de valeurs avec une autre, soit une + vérification de la "vérité" d'une valeur particulière (Une chaîne + donnée est vraie si elle n'est pas vide). Pour une liste exhaustive + des opérateurs de comparaison disponibles, voir la documentation du + module <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>.</p> + + <p>Par exemple, spour insérer l'heure du jour dans votre page web, + vous pouvez ajouter ces lignes dans la page HTML :</p> + + <div class="example"><p><code> + Good + <!--#if expr="%{TIME_HOUR} <12" --><br /> + morning!<br /> + <!--#else --><br /> + afternoon!<br /> + <!--#endif --><br /> + </code></p></div> + + <p>Toute autre variable (que vous avez définie, ou une variable + d'environnement normale) peut être utilisée dans les expressions + conditionnelles. Voir le document <a href="../expr.html">Expressions + rationnelles dans le serveur HTTP Apache</a> pour plus de détails à + propos du fonctionnement du moteur d'évaluation des expressions + rationnelles.</p> + + <p>Associée à la possibilité avec Apache de définir + des variables d'environnement à l'aide de directives + <code>SetEnvIf</code>, ainsi que d'autres directives en rapport, + cette fonctionnalité vous permet d'ajouter une grande variété + de contenus dynamiques côté serveur sans avoir à concevoir une + application web de A à Z.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="conclusion" id="conclusion">Conclusion</a></h2> + + <p>SSI ne remplace certainement pas CGI, ou d'autres technologies + utilisées pour la génération de pages web dynamiques. Mais c'est une + bonne méthode pour ajouter des petits contenus dynamiques à vos + pages, sans devoir fournir un gros effort supplémentaire.</p> +</div></div> +<div class="bottomlang"> +<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.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">Commentaires</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/ssi.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/howto/ssi.html.ja.utf8 b/docs/manual/howto/ssi.html.ja.utf8 new file mode 100644 index 0000000..269df5a --- /dev/null +++ b/docs/manual/howto/ssi.html.ja.utf8 @@ -0,0 +1,515 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>Apache チュートリアル: Server Side Includes 入門 - Apache HTTP サーバ バージョン 2.4</title> +<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" /> +<script src="../style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="../images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p> +<p class="apache">Apache HTTP サーバ バージョン 2.4</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/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="../">バージョン 2.4</a> > <a href="./">How-To / チュートリアル</a></div><div id="page-content"><div id="preamble"><h1>Apache チュートリアル: Server Side Includes 入門</h1> +<div class="toplang"> +<p><span>翻訳済み言語: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> +</div> +<div class="outofdate">この日本語訳はすでに古くなっている + 可能性があります。 + 最近更新された内容を見るには英語版をご覧下さい。 + </div> + +<p>サーバサイドインクルードによって、既存の HTML +ドキュメントに動的なコンテンツを追加することができます。</p> +</div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">はじめに</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#what">SSI とは ?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#configuring">SSI を許可するためのサーバの設定</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#basic">基本的な SSI ディレクティブ</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">追加の例</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#config">他に何が設定できるのか ?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#exec">コマンドの実行</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#advanced">高度な SSI テクニック</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#conclusion">終わりに</a></li> +</ul><h3>参照</h3><ul class="seealso"><li><a href="#comments_section">コメント</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">はじめに</a></h2> + <table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</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> + + <p>この記事は、通常は単に SSI と呼ばれる Server Side Includes + を扱います。この記事においては、サーバでの SSI を許可するための設定と、 + 現在の HTML ページに動的なコンテンツを加えるためのいくつかの基本的な + SSI 技術を紹介します。</p> + + <p>記事の後半では、SSI ディレクティブで SSI + と共に実行することができる条件文のような + 幾分高度な事柄について述べています。</p> + +</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">SSI とは ?</a></h2> + + <p>SSI (Server Side Includes) は、HTML + ページ中に配置されるディレクティブであり、 + サーバでページを提供する時に評価されます。SSI は、CGI + プログラムやその他の動的な技術で全てのページを提供せずに、 + 動的に生成されたコンテンツを現在の HTML ページに加えます。</p> + + <p>どういう場合に SSI を使い、どういう場合にプログラムで + ページを完全に生成するかは、ページのうちどの程度が静的であり、 + ページが提供されるたびに再計算する必要がどの程度あるかで通常は決定します。 + SSI は現在時刻のような小さい情報を加えるにはうってつけの方法です。 + しかし、そのページのほとんどの部分が提供時に生成される場合は、 + 他の方法を探す必要があります。</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">SSI を許可するためのサーバの設定</a></h2> + + + <p>サーバで SSI を許可するには、<code>httpd.conf</code> + ファイルまたは <code>.htaccess</code> + ファイルに次のディレクティブを指定する必要があります:</p> +<div class="example"><p><code> + Options +Includes +</code></p></div> + + <p>この指定は、ファイルを SSI + ディレクティブで解析させることを許可するということを Apache + に伝えます。ほとんどの設定ではお互いを上書きできる、複数の + <code class="directive"><a href="../mod/core.html#options">Options</a></code> があることに + 注意してください。おそらく、設定が最後に評価されることを + 保証されるために、SSI を使用したいディレクトリに <code>Options</code> + ディレクティブを適用する必要があるでしょう。</p> + + <p>全てのファイルが SSI + ディレクティブで解析されるというわけではありません。 + どのファイルが解析されるかを Apache に伝える必要があります。 + これを行なうには二つ方法があります。 + 次のディレクティブを使うことで、例えば <code>.shtml</code> + のような特別なファイル拡張子を持つファイルを解析するよう + Apache に伝えることができます:</p> +<div class="example"><p><code> + AddType text/html .shtml<br /> + AddOutputFilter INCLUDES .shtml +</code></p></div> + + <p>この方法の欠点は、もし現在のページに SSI ディレクティブを加えたい場合、 + それらのディレクティブが実行されるように + <code>.shtml</code> 拡張子にするため、そのページの名前と、 + そのページへの全てのリンクを変更しなければならないことです。</p> + + <p>もう一つの方法は、<code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> + ディレクティブを使用することです:</p> +<div class="example"><p><code> + XBitHack on +</code></p></div> + + <p><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> + は、ファイルの実行ビットが立っている場合、 + SSI ディレクティブにより解析することを Apache に伝えます。 + 従って、SSI ディレクティブを現在のページに加えるためには、 + ファイル名を変更しなくてもよく、単に <code>chmod</code> + を使用してファイルを実行可能にするだけで済みます。</p> +<div class="example"><p><code> + chmod +x pagename.html +</code></p></div> + + <p>行なうべきではないことに関する短いコメント。時々誰かが、全ての + <code>.html</code> ファイルを SSI で解析するよう Apache に伝えれば、 + わざわざ <code>.shtml</code> というファイル名にする必要がないといって + 薦めるのを見ることでしょう。こういう人たちは、おそらく + <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> + について聞いたことがないのでしょう。 + この方法について注意することは、たとえ SSI + ディレクティブを全く含まない場合でも、Apache がクライアントに + 送る全てのファイルを最後まで読み込ませることになります。 + この方法はかなり処理を遅くするものであり、良くないアイデアです。</p> + + <p>もちろん、Windows ではそのような実行ビットをセット + するようなものはありませんのでオプションが少し制限されています。</p> + + <p>デフォルトの設定では、Apache は SSI ページについて最終変更時刻や + コンテンツの長さを HTTP ヘッダに送りません。 + 動的なコンテンツであるため、それらの値を計算するのが難しいからです。 + このためドキュメントがキャッシュされなくなり、 + 結果としてクライアントの性能が遅くなったように感じさせることになります。 + これを解決する方法が二つあります:</p> + + <ol> + <li><code>XBitHack Full</code> 設定を使用する。 + この設定により、もともと要求されたファイルの時刻を参照し、 + 読み込まれるファイルの変更時刻を無視して最終変更時刻を決定するよう + Apache に伝えます。</li> + + <li><a href="../mod/mod_expires.html">mod_expires</a> + で提供されているディレクティブを使用して、 + ファイルが無効になる時刻を明示します。これにより、 + ブラウザとプロキシにキャッシュが有効であることを通知します。</li> + </ol> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="basic" id="basic">基本的な SSI ディレクティブ</a></h2> + + <p>SSI ディレクティブは以下の文法で記述します:</p> +<div class="example"><p><code> + <!--#element attribute=value attribute=value ... --> +</code></p></div> + + <p>HTML のコメントのような書式をしているので、もし SSI + を正しく動作可能にしなければ、ブラウザはそれを無視するでしょう。 + しかし、HTML ソース中では見えます。もし SSI を正しく設定したなら、 + ディレクティブはその結果と置き換えられます。</p> + + <p>element はたくさんあるものから一つ指定することができます。 + 指定できるものの大多数については、次回もう少し詳しく説明します。 + ここでは、SSI で行なうことができる例をいくつか示します。</p> + +<h3><a name="todaysdate" id="todaysdate">今日の日付</a></h3> + +<div class="example"><p><code> + <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + <p><code>echo</code> 要素は単に変数の値を出力します。 + CGI プログラムに利用可能な環境変数の全ての + セットを含む多くの標準変数があります。また、<code>set</code> + 要素を用いることで、独自の変数を定義することができます。 + </p> + + <p>出力される日付の書式が好きではない場合、その書式を修正するために、 + <code>config</code> 要素に <code>timefmt</code> + 属性を使用することができます。</p> + +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + Today is <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + +<h3><a name="lastmodified" id="lastmodified">ファイルの変更日</a></h3> + +<div class="example"><p><code> + This document last modified <!--#flastmod file="index.html" --> +</code></p></div> + + <p>この要素も <code>timefmt</code> + フォーマットの設定に従います。</p> + + +<h3><a name="cgi" id="cgi">CGI プログラムの結果を取り込む</a></h3> + + <p>これは、全ての人のお気に入りである ``ヒットカウンタ'' のような + CGI プログラムの結果を出力する SSI + のより一般的な使用のうちの一つです。</p> + +<div class="example"><p><code> + <!--#include virtual="/cgi-bin/counter.pl" --> +</code></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="additionalexamples" id="additionalexamples">追加の例</a></h2> + + + <p>以下は、SSI を使用して HTML + ドキュメントにおいてできることのいくつかの特別な例です。</p> + +<h3><a name="docmodified" id="docmodified">いつこのドキュメントは修正されたのか +?</a></h3> + + <p>先に、ドキュメントが最後に変更されたのはいつかを + ユーザに通知するために SSI を使用することができることを述べました。 + しかしながら、実際の方法は、いくぶん問題のままにしておきました。 + HTML ドキュメントに配置された次のコードは、ページにそのような + タイムスタンプを入れるでしょう。もちろん、上述のように、 + SSI を正しく動作可能にしておく必要があります。</p> +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + This file last modified <!--#flastmod file="ssi.shtml" --> +</code></p></div> + + <p>もちろん、<code>ssi.shtml</code> + の部分を実際の当該ファイル名と置き換える必要があります。 + もし、あらゆるファイルに張ることができる一般的なコードを探しているなら、 + これは不便であるかもしれません。おそらくその場合は、 + そうする代わりに変数 <code>LAST_MODIFIED</code> + を使用したいと考えるでしょう:</p> +<div class="example"><p><code> + <!--#config timefmt="%D" --><br /> + This file last modified <!--#echo var="LAST_MODIFIED" --> +</code></p></div> + + <p><code>timefmt</code> + 書式についてのより詳細については、お好みの検索サイトに行き、 + <code>strftime</code> で検索してみてください。文法は同じです。</p> + + +<h3><a name="standard-footer" id="standard-footer">標準のフッタを挿入する</a></h3> + + + <p>もし数ページを超えるページを持つサイトを管理しているならば、 + 全ページに対して変項を行なうことが本当に苦痛となり得ることが + 分かるでしょう。全てのページに渡ってある種の標準的な外観を + 維持しようとしているならば特にそうでしょう。</p> + + <p>ヘッダやフッタ用の挿入用ファイルを使用することで、 + このような更新にかかる負担を減らすことができます。 + 一つのフッタファイルを作成し、それを <code>include</code> + SSI コマンドで各ページに入れるだけで済みます。<code>include</code> + 要素は、<code>file</code> 属性または <code>virtual</code> + 属性のいずれかを使用してどのファイルを挿入するかを決めることができます。 + <code>file</code> 属性は、<em>カレントディレクトリからの相対パスで示された + </em>ファイルパスです。 + それは / で始まる絶対ファイルパスにはできず、また、そのパスの一部に ../ + を含むことができないことを意味します。<code>virtual</code> + 属性は、おそらくより便利だと思いますが、提供するドキュメントからの相対 + URL で指定すべきです。それは / で始めることができますが、 + 提供するファイルと同じサーバ上に存在しなくてはなりません。</p> +<div class="example"><p><code> + <!--#include virtual="/footer.html" --> +</code></p></div> + + <p>私は最後の二つを組み合わせて、<code>LAST_MODIFIED</code> + ディレクティブをフッタファイルの中に置くことがよくあります。 + SSI ディレクティブは、挿入用のファイルに含ませたり、 + 挿入ファイルのネストをしたりすることができます。すなわち、 + 挿入用のファイルは他のファイルを再帰的に挿入することができます。</p> + + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="config" id="config">他に何が設定できるのか ?</a></h2> + + + <p>時刻書式を <code>config</code> で設定できることに加えて、 + 更に二つ <code>config</code> で設定することができます。</p> + + <p>通常、SSI ディレクティブで何かがうまくいかないときは、 + 次のメッセージが出力されます。</p> +<div class="example"><p><code> + [an error occurred while processing this directive] +</code></p></div> + + <p>このメッセージを他のものにしたい場合、<code>config</code> + 要素の <code>errmsg</code> 属性で変更することができます:</p> +<div class="example"><p><code> + <!--#config errmsg="[It appears that you don't know how to use SSI]" --> +</code></p></div> + + <p>おそらく、エンドユーザはこのメッセージを決して見ることはありません。 + なぜなら、そのサイトが生きた状態になる前に SSI ディレクティブに関する + 全ての問題を解決しているはずだからです。(そうですよね?)</p> + + <p>そして、<code>config</code> において <code>sizefmt</code> + 属性を使用することで、 + 返されるファイルサイズの書式を設定することができます。 + バイト数には <code>bytes</code> を、適当に Kb や Mb + に短縮させるには <code>abbrev</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="exec" id="exec">コマンドの実行</a></h2> + + + <p>今後数ヶ月のうちに、小さな CGI プログラムと SSI + を使用する記事を出したいと考えています。ここではそれとは別に、 + <code>exec</code> 要素によって行なうことができることを示します。 + SSI にシェル (正確には <code>/bin/sh</code>。Win32 ならば DOS シェル) + を使用してコマンドを実行させることができます。 + 下記の例では、ディレクトリリスト出力を行ないます。</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="ls" --><br /> + </pre> +</code></p></div> + + <p>Windows 上では、</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="dir" --><br /> + </pre> +</code></p></div> + + <p>Windows 上では、このディレクティブによっていくつかの奇妙な + 書式に気づくでしょう。なぜなら <code>dir</code> の出力が文字列 + ``<<code>dir</code>>'' を含み、ブラウザを混乱させるからです。</p> + + <p>この機能は非常に危険であり、どんなコードでも <code>exec</code> + タグに埋め込まれてしまえば実行することに注意してください。例えば + `` ゲストブック '' のように、もし、 + ユーザがページの内容を編集できる状況にあるならば、 + この機能を確実に抑制してください。<code>Options</code> + ディレクティブの <code>IncludesNOEXEC</code> 引数を指定することで、 + SSI は許可するけれど <code>exec</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="advanced" id="advanced">高度な SSI テクニック</a></h2> + + + <p>コンテンツを出力することに加え、Apache SSI は変数を設定し、 + そして比較と条件分岐にその変数を使用できる機能を提供しています。 + </p> + +<h3><a name="caveat" id="caveat">警告</a></h3> + + <p>この記事で述べた大部分の機能は、Apache 1.2 + 以降を使用している場合のみ利用可能です。もちろん、もし Apache 1.2 + 以降を使用してない場合、直ちにアップグレードする必要があります。 + さぁ、今それを行ないなさい。それまで待っています。</p> + + +<h3><a name="variables" id="variables">変数を設定する</a></h3> + + <p><code>set</code> ディレクティブを使用して、 + 後で使用するために変数を設定することができます。 + これは後の説明で必要になるので、ここでそれについて述べています。 + 文法は以下のとおりです:</p> +<div class="example"><p><code> + <!--#set var="name" value="Rich" --> +</code></p></div> + + <p>このように単純に文字どおりに設定することに加え、 + <a href="../env.html">環境変数</a>や上記の変数 + (例えば <code>LAST_MODIFIED</code> のような) + を含む他のあらゆる変数を値を設定するのに使用することができます。 + 変数名の前にドル記号 ($) を使用することで、 + それがリテラル文字列ではなくて変数であることを示します。</p> +<div class="example"><p><code> + <!--#set var="modified" value="$LAST_MODIFIED" --> +</code></p></div> + + <p>ドル記号 ($) を文字として変数の値に入れるには、 + バックスラッシュによってドル記号をエスケープする必要があります。</p> +<div class="example"><p><code> + <!--#set var="cost" value="\$100" --> +</code></p></div> + + <p>最後になりますが、長い文字列の中に変数を置きたい場合で、 + 変数名が他の文字とぶつかる可能性があり、 + それらの文字について混乱してしまう場合、この混乱を取り除くため、 + 変数名を中括弧で囲むことができます + (これについての良い例を示すのは難しいのですが、 + おそらく分かっていただけるでしょう)。 + </p> +<div class="example"><p><code> + <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> +</code></p></div> + + +<h3><a name="conditional" id="conditional">条件式</a></h3> + + + <p>さて、変数を持っていて、 + それらの値を設定して比較することができるのですから、 + 条件を表すためにそれらを使用することができます。これにより + SSI はある種の小さなプログラミング言語になっています。 + <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> は条件を表現するために <code>if</code>, + <code>elif</code>, <code>else</code>, <code>endif</code> + 構造を提供しています。これによって、 + 一つの実際のページから複数の論理ページを効果的に生成することができます。</p> + + <p>条件構造は以下のとおりです:</p> +<div class="example"><p><code> + <!--#if expr="test_condition" --><br /> + <!--#elif expr="test_condition" --><br /> + <!--#else --><br /> + <!--#endif --> +</code></p></div> + + <p><em>test_condition</em> + はあらゆる種類の論理的比較をすることができます。 + 値を比較したり、その値が ``真'' かどうかを評価します + (空でないなら与えられた文字列は真です)。 + 利用可能な比較演算子の全てのリストについては、 + <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> ドキュメンテーションを参照してください。 + ここでは、この構造をどう使用するかの例をいくつか示します。</p> + + <p>設定ファイルで次の行を記述します:</p> +<div class="example"><p><code> + BrowserMatchNoCase macintosh Mac<br /> + BrowserMatchNoCase MSIE InternetExplorer +</code></p></div> + + <p>これはクライアントが Macintosh + 上でインターネットエクスプローラが動いている場合、環境変数 + ``Mac'' と ``InternetExplorer'' を真と設定します。</p> + + <p>次に、SSI が可能になったドキュメントで以下を行ないます: + </p> +<div class="example"><p><code> + <!--#if expr="${Mac} && ${InternetExplorer}" --><br /> + Apologetic text goes here<br /> + <!--#else --><br /> + Cool JavaScript code goes here<br /> + <!--#endif --> +</code></p></div> + + <p>Mac 上の IE に対して何か思うところがあるわけでありません。 + 他では実行できているいくつかの JavaScript を Mac 上の IE + で実行させるのに、先週数時間苦労したというだけのことです。 + 上の例はその暫定的な対処方法です。</p> + + <p>他のどんな変数 (あなたが定義するもの、 + または普通の環境変数のいずれか) も、条件文に使用することができます。 + Apache は <code>SetEnvIf</code> ディレクティブや他の関連 + ディレクティブを使用して環境変数を設定することができます。 + この機能により、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="conclusion" id="conclusion">終わりに</a></h2> + + <p>SSI は確かに CGI + や動的なウェブページを生成する他の技術に代わるものではありません。 + しかし、たくさんの余分な作業をせずに、 + 少量の動的なコンテンツを加えるにはすぐれた方法です。</p> +</div></div> +<div class="bottomlang"> +<p><span>翻訳済み言語: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.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">コメント</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/ssi.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p> +<p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/howto/ssi.html.ko.euc-kr b/docs/manual/howto/ssi.html.ko.euc-kr new file mode 100644 index 0000000..01ebf3c --- /dev/null +++ b/docs/manual/howto/ssi.html.ko.euc-kr @@ -0,0 +1,458 @@ +<?xml version="1.0" encoding="EUC-KR"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head> +<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>ġ 丮: Server Side Includes Ұ - Apache HTTP Server Version 2.4</title> +<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" /> +<script src="../style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="../images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="../mod/"></a> | <a href="../mod/directives.html">þ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html"></a> | <a href="../sitemap.html">Ʈ</a></p> +<p class="apache">Apache HTTP Server Version 2.4</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/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">How-To / Tutorials</a></div><div id="page-content"><div id="preamble"><h1>ġ 丮: Server Side Includes Ұ</h1> +<div class="toplang"> +<p><span> : </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.html" title="Korean"> ko </a></p> +</div> +<div class="outofdate"> ֽ ƴմϴ. + ֱٿ ϼ.</div> + +<p>Server-side includes Ͽ HTML +߰ ִ.</p> +</div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Ұ</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#what">SSI ΰ?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#configuring">SSI ϵ ϱ</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#basic">⺻ SSI þ</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">߰ </a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#config">̿ܿ ִ ?</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#exec">ɾ ϱ</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#advanced"> SSI </a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#conclusion"></a></li> +</ul><h3></h3><ul class="seealso"><li><a href="#comments_section">Comments</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">Ұ</a></h2> + <table class="related"><tr><th>õ </th><th>õ þ</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> + + <p> SSI θ Server Side Includes Ѵ. + SSI ϵ ϴ HTML + ߰ϴ ⺻ SSI ҰѴ.</p> + + <p> κ SSI þ ǹ ޱ + Ѵ.</p> + +</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">SSI ΰ?</a></h2> + + <p>SSI (Server Side Includes) HTML ϴ þ, + Ҷ óѴ. SSI ϸ CGI + α̳ ٸ ü + ʰ HTML ߰ + ִ.</p> + + <p>SSI ƴϸ α ü + κ + ٽ ؾ ȴ. SSI + ð ߰ϴµ . + Ҷ κ ؾ Ѵٸ ٸ + ãƺ Ѵ.</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">SSI ϵ ϱ</a></h2> + + + <p> SSI óϷ <code>httpd.conf</code> ̳ + <code>.htaccess</code> Ͽ þ ؾ Ѵ.</p> +<div class="example"><p><code> + Options +Includes +</code></p></div> + + <p> ġ Ͽ SSI þ óѴ. + <code class="directive"><a href="../mod/core.html#options">Options</a></code> þ + ְ, þ Ἥ ȿ . + þ Ǹ óϱ SSI ϴ Ư + 丮 <code>Options</code> Ѵ.</p> + + <p> Ͽ SSI þ óϴ ƴϴ. ġ + ó ˷ Ѵ. ΰ ִ. + ϳ þ <code>.shtml</code> Ư + Ȯڸ óϴ ̴.</p> +<div class="example"><p><code> + AddType text/html .shtml<br /> + AddOutputFilter INCLUDES .shtml +</code></p></div> + + <p> ̹ ִ SSI þ ߰ϴ + SSI þ óϱ <code>.shtml</code> Ȯڸ + οϱ ϸ ũ ؾ + ϴ ̴.</p> + + <p>ٸ <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> + þ ϴ ̴.</p> +<div class="example"><p><code> + XBitHack on +</code></p></div> + + <p><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> + ִ Ͽ SSI þ óѴ. ̹ + ִ SSI þ ߰Ѵٸ ϸ + ʰ <code>chmod</code> Ͽ ָ ȴ.</p> +<div class="example"><p><code> + chmod +x pagename.html +</code></p></div> + + <p> ƾ ϳ. <code>.shtml</code> ϸ + ġ <code>.html</code> SSI ó϶ + ϴ ִ. Ƹ <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> + . ̷ ϸ ġ Ͽ SSI þ + Ŭ̾Ʈ Ѵٴ + ̴. ſ , ƴϴ.</p> + + <p> ̶ ڸ + .</p> + + <p> ̿ ϱ Ʊ ġ ⺻ + SSI ֱټϰ content length HTTP + ʴ´. ij ϰ Ŭ̾Ʈ + . ΰ ذ ִ.</p> + + <ol> + <li><code>XBitHack Full</code> Ѵ. + ġ ϴ(include) ϵ ü + û ¥ ֱټ ˾Ƴ.</li> + + <li><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> ִ þ Ͽ + Ͽ ϸ Ͻð + ij ִ.</li> + </ol> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="basic" id="basic">⺻ SSI þ</a></h2> + + <p>SSI þ .</p> +<div class="example"><p><code> + <!--#element attribute=value attribute=value ... --> +</code></p></div> + + <p>HTML ּ SSI ʾƵ + HTML ҽ Ѵ. SSI ùٷ + ϸ þ ٲ۴.</p> + + <p>element ϳ. ȸ ڼ ̴. + SSI ִ δ</p> + +<h3><a name="todaysdate" id="todaysdate"> ¥</a></h3> + +<div class="example"><p><code> + <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + <p><code>echo</code> element ״ Ѵ. + CGI α ϴ ȯ溯 ܿ ǥ + ִ. , <code>set</code> element Ͽ + ִ.</p> + + <p>¥ ʴ´ٸ, + <code>config</code> element <code>timefmt</code> attribute + Ѵ.</p> + +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + Today is <!--#echo var="DATE_LOCAL" --> +</code></p></div> + + +<h3><a name="lastmodified" id="lastmodified"> </a></h3> + +<div class="example"><p><code> + <!--#flastmod file="index.html" --> Ǿ +</code></p></div> + + <p> element <code>timefmt</code> ȴ.</p> + + +<h3><a name="cgi" id="cgi">CGI α ϱ</a></h3> + + <p>Ϲ SSI ϳ, ̵ ֿϴ ``湮 + ī'' CGI α Ѵ.</p> + +<div class="example"><p><code> + <!--#include virtual="/cgi-bin/counter.pl" --> +</code></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="additionalexamples" id="additionalexamples">߰ </a></h2> + + + <p> HTML ִ SSI .</p> + +<h3><a name="docmodified" id="docmodified"> +Ǿ?</a></h3> + + <p>տ SSI Ͽ ڿ ֱټ + ˸ ִٰ ߴ. ˷ ʾҴ. + ڵ带 HTML ϸ ð . + Ѵ SSI ùٷ ۵ؾ Ѵ.</p> +<div class="example"><p><code> + <!--#config timefmt="%A %B %d, %Y" --><br /> + <!--#flastmod file="ssi.shtml" --> Ǿ; +</code></p></div> + + <p> <code>ssi.shtml</code> ϴ ϸ + Ѵ. ƹ ٿ ִ ڵ带 + Ѵٸ, ϸ <code>LAST_MODIFIED</code> + Ѵ.</p> +<div class="example"><p><code> + <!--#config timefmt="%D" --><br /> + This file last modified <!--#echo var="LAST_MODIFIED" --> +</code></p></div> + + <p><code>timefmt</code> Ŀ ڼ ˻ + <code>strftime</code> ãƺ. .</p> + + +<h3><a name="standard-footer" id="standard-footer">ǥ ϴ ϱ</a></h3> + + + <p> ִ Ʈ Ѵٸ ü + ϴ , Ư ǥ ܰ ϴ + Ӵ.</p> + + <p> (header) ϴ(footer) Ϸ Ͽ + ̷ δ ִ. + <code>include</code> SSI ɾ Ͽ ϴ + ϳ ϸ ȴ. <code>include</code> element + <code>file</code> attribute <code>virtual</code> attribute + Ѵ. <code>file</code> attribute <em> + 丮 </em> ϰδ. , (/ ϴ) + ϰγ ȿ ../ . Ƹ ϴ + URL ִ <code>virtual</code> attribute + ̴. θ / , Ϸ + ϴ ϰ ־ Ѵ.</p> +<div class="example"><p><code> + <!--#include virtual="/footer.html" --> +</code></p></div> + + <p> ΰ ļ ϴ Ͽ + <code>LAST_MODIFIED</code> þ ִ´. Ϸ Ͽ + SSI þ , ̷ ٸ + ϴ ִ.</p> + + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="config" id="config">̿ܿ ִ ?</a></h2> + + + <p>ð <code>config</code>() ܿ ΰ + <code>config</code>() ִ.</p> + + <p> SSI þ ߸Ǹ ´</p> +<div class="example"><p><code> + [an error occurred while processing this directive] +</code></p></div> + + <p> ϰ ʹٸ <code>config</code> element + <code>errmsg</code> attribute Ͽ Ѵ.</p> +<div class="example"><p><code> + <!--#config errmsg="[It appears that you don't know how to use SSI]" --> +</code></p></div> + + <p>Ʈ ϱ SSI þ ذϿ + ڰ ̷ ʱ ٶ. (?)</p> + + <p> <code>sizefmt</code> attribute ȯϴ ũ + <code>config</code>() ִ. Ʈ ũ⸦ + ַ <code>bytes</code>, Kb Mb ũ⸦ + ַ <code>abbrev</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="exec" id="exec">ɾ ϱ</a></h2> + + + <p> CGI α SSI ϴ + ̴. <code>exec</code> element + ִ ٸ ͵ ̴. SSI (Ȯ + <code>/bin/sh</code> Win32 Ѵٸ DOS ) Ͽ + ɾ Ѵ. , 丮 ش.</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="ls" --><br /> + </pre> +</code></p></div> + + <p>or, on Windows</p> +<div class="example"><p><code> + <pre><br /> + <!--#exec cmd="dir" --><br /> + </pre> +</code></p></div> + + <p><code>dir</code> ¿ ȥ + ``<<code>dir</code>>'' ڿ Եֱ, + þ ϸ ̻ ̴.</p> + + <p> <code>exec</code> ± ɾ + ֱ ſ ϴ. ``'' ڰ + ִ ȯ̶, + ؼ ȵȴ. <code>Options</code> þ + <code>IncludesNOEXEC</code> ƱԸƮ Ͽ SSI + <code>exec</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="advanced" id="advanced"> SSI </a></h2> + + + <p> ϴ ܿ ġ SSI ϰ, + ǹ ִ.</p> + +<h3><a name="caveat" id="caveat"></a></h3> + + <p> ۿ ϴ κ ġ 1.2 ĺ + ִ. , ġ 1.2 ̻ ʴ´ٸ + Ƹ ̵ؾ Ѵ. ض. ض. ٸ + ̴.</p> + + +<h3><a name="variables" id="variables"> </a></h3> + + <p><code>set</code> þ Ͽ ߿ + ִ. ʿϱ Ѵ. + .</p> +<div class="example"><p><code> + <!--#set var="name" value="Rich" --> +</code></p></div> + + <p> ڱ״ ʰ <a href="../env.html">ȯ溯</a> ( + , <code>LAST_MODIFIED</code>) ٸ Ͽ + ִ. ̶ տ ǥ($) + ٿ ڿ ƴ ǥѴ.</p> + + <div class="example"><p><code> <!--#set var="modified" value="$LAST_MODIFIED" --> + </code></p></div> + + <p> ڸ ״ ԷϷ ǥ տ + 齽 Ѵ.</p> +<div class="example"><p><code> + <!--#set var="cost" value="\$100" --> +</code></p></div> + + <p> ڿ ߰ ϴµ ڿ ִ + ڵ Ͽ ȥǴ , ȣ + Ȯ Ѵ. ( ã , + ϱ ٶ.)</p> +<div class="example"><p><code> + <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> +</code></p></div> + + +<h3><a name="conditional" id="conditional"> ǥ</a></h3> + + + <p> ϰ ǹ ϴ. + SSI α־ ȴ. + <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> ǹ <code>if</code>, + <code>elif</code>, <code>else</code>, <code>endif</code> + Ѵ. + ִ.</p> + + <p>ǹ .</p> +<div class="example"><p><code> + <!--#if expr="test_condition" --><br /> + <!--#elif expr="test_condition" --><br /> + <!--#else --><br /> + <!--#endif --> +</code></p></div> + + <p><em>test_condition</em> + ִ. ٸ ϰų, Ư ``'' + ˻Ѵ. (ڿ ̴.) 밡 + ڸ , <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> + ϶. ǹ .</p> + + <p>Ͽ ߰Ѵ.</p> +<div class="example"><p><code> + BrowserMatchNoCase macintosh Mac<br /> + BrowserMatchNoCase MSIE InternetExplorer +</code></p></div> + + <p>Ŭ̾Ʈ Ųÿ ϴ Internet Explorer + ȯ溯 ``Mac'' ``InternetExplorer'' Ѵ.</p> + + <p> SSI ´.</p> +<div class="example"><p><code> + <!--#if expr="${Mac} && ${InternetExplorer}" --><br /> + ´<br /> + <!--#else --><br /> + JavaScript ڵ尡 ´<br /> + <!--#endif --> +</code></p></div> + + <p> Ų IE ݰ ִ ƴϴ. + ֿ ٸ JavaScript ڵ尡 Ų + IE ʾƼ ð ߴ. ӽ + ذå̴.</p> + + <p>( Ͽ Ϲ ȯ溯̰) ǹ + ִ. ƶġ <code>SetEnvIf</code> ٸ + þ ȯ溯 ֱ 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="conclusion" id="conclusion"></a></h2> + + <p>SSI Ȯ CGI ϴ ٸ + ü . ߰ ۾ + ߰ϱ Ǹ ̴.</p> +</div></div> +<div class="bottomlang"> +<p><span> : </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Español"> es </a> | +<a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="../ko/howto/ssi.html" 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">Comments</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/ssi.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="menu"><a href="../mod/"></a> | <a href="../mod/directives.html">þ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html"></a> | <a href="../sitemap.html">Ʈ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file |