⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mod_rewrite.html.en

📁 Apache HTTP Server 是一个功能强大的灵活的与HTTP/1.1相兼容的web服务器.这里给出的是Apache HTTP服务器的源码。
💻 EN
📖 第 1 页 / 共 5 页
字号:
                  include/ap_mmn.h. The module API version                  corresponds to the version of Apache in use (in                  the release version of Apache 1.3.14, for                  instance, it is 19990320:10), but is mainly of                  interest to module authors.</dd>                  <dt><code>THE_REQUEST</code></dt>                  <dd>The full HTTP request line sent by the                  browser to the server (e.g., "<code>GET                  /index.html HTTP/1.1</code>"). This does not                  include any additional headers sent by the                  browser.</dd>                  <dt><code>REQUEST_URI</code></dt>                  <dd>The resource requested in the HTTP request                  line. (In the example above, this would be                  "/index.html".)</dd>                  <dt><code>REQUEST_FILENAME</code></dt>                  <dd>The full local filesystem path to the file or                  script matching the request.</dd>                  <dt><code>HTTPS</code></dt>                  <dd>Will contain the text "on" if the connection is                  using SSL/TLS, or "off" otherwise.  (This variable                  can be safely used regardless of whether                  <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is loaded).</dd>                </dl></div>        </li>      </ul>      <p>Special Notes:</p>      <ol>        <li>The variables SCRIPT_FILENAME and REQUEST_FILENAME        contain the same value, <em>i.e.</em>, the value of the        <code>filename</code> field of the internal        <code>request_rec</code> structure of the Apache server.        The first name is just the commonly known CGI variable name        while the second is the consistent counterpart to        REQUEST_URI (which contains the value of the        <code>uri</code> field of <code>request_rec</code>).</li>        <li>There is the special format:        <code>%{ENV:variable}</code> where <em>variable</em> can be        any environment variable. This is looked-up via internal        Apache structures and (if not found there) via        <code>getenv()</code> from the Apache server process.</li>        <li>There is the special format:         <code>%{SSL:variable}</code> where <em>variable</em> is the        name of an <a href="mod_ssl.html#envvars">SSL environment        variable</a>; this can be used whether or not        <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is loaded, but will always expand to        the empty string if it is not.  Example:        <code>%{SSL:SSL_CIPHER_USEKEYSIZE}</code> may expand to        <code>128</code>.</li>        <li>There is the special format:        <code>%{HTTP:header}</code> where <em>header</em> can be        any HTTP MIME-header name. This is looked-up from the HTTP        request. Example: <code>%{HTTP:Proxy-Connection}</code> is        the value of the HTTP header        ``<code>Proxy-Connection:</code>''.</li>        <li>There is the special format        <code>%{LA-U:variable}</code> for look-aheads which perform        an internal (URL-based) sub-request to determine the final        value of <em>variable</em>. Use this when you want to use a        variable for rewriting which is actually set later in an        API phase and thus is not available at the current stage.        For instance when you want to rewrite according to the        <code>REMOTE_USER</code> variable from within the        per-server context (<code>httpd.conf</code> file) you have        to use <code>%{LA-U:REMOTE_USER}</code> because this        variable is set by the authorization phases which come        <em>after</em> the URL translation phase where mod_rewrite        operates. On the other hand, because mod_rewrite implements        its per-directory context (<code>.htaccess</code> file) via        the Fixup phase of the API and because the authorization        phases come <em>before</em> this phase, you just can use        <code>%{REMOTE_USER}</code> there.</li>        <li>There is the special format:        <code>%{LA-F:variable}</code> which performs an internal        (filename-based) sub-request to determine the final value        of <em>variable</em>. Most of the time this is the same as        LA-U above.</li>      </ol>      <p><em>CondPattern</em> is the condition pattern,      <em>i.e.</em>, a regular expression which is applied to the      current instance of the <em>TestString</em>, <em>i.e.</em>,      <em>TestString</em> is evaluated and then matched against      <em>CondPattern</em>.</p>      <p><strong>Remember:</strong> <em>CondPattern</em> is a      <em>perl compatible regular expression</em> with some      additions:</p>      <ol>        <li>You can prefix the pattern string with a        '<code>!</code>' character (exclamation mark) to specify a        <strong>non</strong>-matching pattern.</li>        <li>          There are some special variants of <em>CondPatterns</em>.          Instead of real regular expression strings you can also          use one of the following:           <ul>            <li>'<strong>&lt;CondPattern</strong>' (is lexically            lower)<br />             Treats the <em>CondPattern</em> as a plain string and            compares it lexically to <em>TestString</em>. True if            <em>TestString</em> is lexically lower than            <em>CondPattern</em>.</li>            <li>'<strong>&gt;CondPattern</strong>' (is lexically            greater)<br />             Treats the <em>CondPattern</em> as a plain string and            compares it lexically to <em>TestString</em>. True if            <em>TestString</em> is lexically greater than            <em>CondPattern</em>.</li>            <li>'<strong>=CondPattern</strong>' (is lexically            equal)<br />             Treats the <em>CondPattern</em> as a plain string and            compares it lexically to <em>TestString</em>. True if            <em>TestString</em> is lexically equal to            <em>CondPattern</em>, i.e the two strings are exactly            equal (character by character). If <em>CondPattern</em>            is just <code>""</code> (two quotation marks) this            compares <em>TestString</em> to the empty string.</li>            <li>'<strong>-d</strong>' (is            <strong>d</strong>irectory)<br />             Treats the <em>TestString</em> as a pathname and tests            if it exists and is a directory.</li>            <li>'<strong>-f</strong>' (is regular            <strong>f</strong>ile)<br />             Treats the <em>TestString</em> as a pathname and tests            if it exists and is a regular file.</li>            <li>'<strong>-s</strong>' (is regular file with            <strong>s</strong>ize)<br />             Treats the <em>TestString</em> as a pathname and tests            if it exists and is a regular file with size greater            than zero.</li>            <li>'<strong>-l</strong>' (is symbolic            <strong>l</strong>ink)<br />             Treats the <em>TestString</em> as a pathname and tests            if it exists and is a symbolic link.</li>            <li>'<strong>-F</strong>' (is existing file via            subrequest)<br />             Checks if <em>TestString</em> is a valid file and            accessible via all the server's currently-configured            access controls for that path. This uses an internal            subrequest to determine the check, so use it with care            because it decreases your servers performance!</li>            <li>'<strong>-U</strong>' (is existing URL via            subrequest)<br />             Checks if <em>TestString</em> is a valid URL and            accessible via all the server's currently-configured            access controls for that path. This uses an internal            subrequest to determine the check, so use it with care            because it decreases your server's performance!</li>          </ul><div class="note"><h3>Notice</h3>              All of these tests can              also be prefixed by an exclamation mark ('!') to              negate their meaning.</div>        </li>      </ol>      <p>Additionally you can set special flags for      <em>CondPattern</em> by appending</p>      <p class="indent">        <strong><code>[</code><em>flags</em><code>]</code></strong>      </p>      <p>as the third argument to the <code>RewriteCond</code>      directive. <em>Flags</em> is a comma-separated list of the      following flags:</p>      <ul>        <li>'<strong><code>nocase|NC</code></strong>'        (<strong>n</strong>o <strong>c</strong>ase)<br />         This makes the test case-insensitive, <em>i.e.</em>, there        is no difference between 'A-Z' and 'a-z' both in the        expanded <em>TestString</em> and the <em>CondPattern</em>.        This flag is effective only for comparisons between        <em>TestString</em> and <em>CondPattern</em>. It has no        effect on filesystem and subrequest checks.</li>        <li>          '<strong><code>ornext|OR</code></strong>'          (<strong>or</strong> next condition)<br />           Use this to combine rule conditions with a local OR          instead of the implicit AND. Typical example: <div class="example"><pre>RewriteCond %{REMOTE_HOST}  ^host1.*  [OR]RewriteCond %{REMOTE_HOST}  ^host2.*  [OR]RewriteCond %{REMOTE_HOST}  ^host3.*RewriteRule ...some special stuff for any of these hosts...</pre></div>          Without this flag you would have to write the cond/rule          three times.        </li>      </ul>      <p><strong>Example:</strong></p>       <p>To rewrite the Homepage of a site according to the        ``<code>User-Agent:</code>'' header of the request, you can        use the following: </p><div class="example"><pre>RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*RewriteRule  ^/$                 /homepage.max.html  [L]RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*RewriteRule  ^/$                 /homepage.min.html  [L]RewriteRule  ^/$                 /homepage.std.html  [L]</pre></div>        <p>Interpretation: If you use Netscape Navigator as your        browser (which identifies itself as 'Mozilla'), then you        get the max homepage, which includes Frames, <em>etc.</em>        If you use the Lynx browser (which is Terminal-based), then        you get the min homepage, which contains no images, no        tables, <em>etc.</em> If you use any other browser you get        the standard homepage.</p></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="RewriteEngine" id="RewriteEngine">RewriteEngine</a> <a name="rewriteengine" id="rewriteengine">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables or disables runtime rewriting engine</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteEngine on|off</code></td></tr><tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>RewriteEngine off</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr><tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr><tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr></table>             <p>The <code class="directive">RewriteEngine</code> directive enables or      disables the runtime rewriting engine. If it is set to      <code>off</code> this module does no runtime processing at      all. It does not even update the <code>SCRIPT_URx</code>      environment variables.</p>      <p>Use this directive to disable the module instead of      commenting out all the <code class="directive"><a href="#rewriterule">RewriteRule</a></code> directives!</p>      <p>Note that, by default, rewrite configurations are not      inherited. This means that you need to have a      <code>RewriteEngine on</code> directive for each virtual host      in which you wish to use it.</p></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -