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

📄 rewrite_guide_advanced.html.en

📁 apache的软件linux版本
💻 EN
📖 第 1 页 / 共 4 页
字号:
    $bytes = sysread(FP, $buffer, $size);    close(FP);    return $buffer;}$buffer = &amp;readfile($QS_f);&amp;print_http_headers_multipart_begin;&amp;displayhtml($buffer);sub mystat {    local($file) = $_[0];    local($time);    ($x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime) = stat($file);    return $mtime;}$mtimeL = &amp;mystat($QS_f);$mtime = $mtime;for ($n = 0; $n &amp;lt; $QS_n; $n++) {    while (1) {        $mtime = &amp;mystat($QS_f);        if ($mtime ne $mtimeL) {            $mtimeL = $mtime;            sleep(2);            $buffer = &amp;readfile($QS_f);            &amp;print_http_headers_multipart_next;            &amp;displayhtml($buffer);            sleep(5);            $mtimeL = &amp;mystat($QS_f);            last;        }        sleep($QS_s);    }}&amp;print_http_headers_multipart_end;exit(0);##EOF##</pre></div>        </dd>      </dl>        <h3>Mass Virtual Hosting</h3>            <dl>        <dt>Description:</dt>        <dd>          <p>The <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> feature of Apache is nice          and works great when you just have a few dozens          virtual hosts. But when you are an ISP and have hundreds of          virtual hosts to provide this feature is not the best          choice.</p>        </dd>        <dt>Solution:</dt>        <dd>          <p>To provide this feature we map the remote webpage or even          the complete remote webarea to our namespace by the use          of the <dfn>Proxy Throughput</dfn> feature (flag <code>[P]</code>):</p><div class="example"><pre>####  vhost.map##www.vhost1.dom:80  /path/to/docroot/vhost1www.vhost2.dom:80  /path/to/docroot/vhost2     :www.vhostN.dom:80  /path/to/docroot/vhostN</pre></div><div class="example"><pre>####  httpd.conf##    :#   use the canonical hostname on redirects, etc.UseCanonicalName on    :#   add the virtual host in front of the CLF-formatCustomLog  /path/to/access_log  "%{VHOST}e %h %l %u %t \"%r\" %&gt;s %b"    :#   enable the rewriting engine in the main serverRewriteEngine on#   define two maps: one for fixing the URL and one which defines#   the available virtual hosts with their corresponding#   DocumentRoot.RewriteMap    lowercase    int:tolowerRewriteMap    vhost        txt:/path/to/vhost.map#   Now do the actual virtual host mapping#   via a huge and complicated single rule:##   1. make sure we don't map for common locationsRewriteCond   %{REQUEST_URI}  !^/commonurl1/.*RewriteCond   %{REQUEST_URI}  !^/commonurl2/.*    :RewriteCond   %{REQUEST_URI}  !^/commonurlN/.*##   2. make sure we have a Host header, because#      currently our approach only supports#      virtual hosting through this headerRewriteCond   %{HTTP_HOST}  !^$##   3. lowercase the hostnameRewriteCond   ${lowercase:%{HTTP_HOST}|NONE}  ^(.+)$##   4. lookup this hostname in vhost.map and#      remember it only when it is a path#      (and not "NONE" from above)RewriteCond   ${vhost:%1}  ^(/.*)$##   5. finally we can map the URL to its docroot location#      and remember the virtual host for logging puposesRewriteRule   ^/(.*)$   %1/$1  [E=VHOST:${lowercase:%{HTTP_HOST}}]    :</pre></div>        </dd>      </dl>      </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="access" id="access">Access Restriction</a></h2>        <h3>Host Deny</h3>            <dl>        <dt>Description:</dt>        <dd>          <p>How can we forbid a list of externally configured hosts          from using our server?</p>        </dd>        <dt>Solution:</dt>        <dd>          <p>For Apache &gt;= 1.3b6:</p><div class="example"><pre>RewriteEngine onRewriteMap    hosts-deny  txt:/path/to/hosts.denyRewriteCond   ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]RewriteCond   ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUNDRewriteRule   ^/.*  -  [F]</pre></div>          <p>For Apache &lt;= 1.3b6:</p><div class="example"><pre>RewriteEngine onRewriteMap    hosts-deny  txt:/path/to/hosts.denyRewriteRule   ^/(.*)$ ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}/$1RewriteRule   !^NOT-FOUND/.* - [F]RewriteRule   ^NOT-FOUND/(.*)$ ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}/$1RewriteRule   !^NOT-FOUND/.* - [F]RewriteRule   ^NOT-FOUND/(.*)$ /$1</pre></div><div class="example"><pre>####  hosts.deny####  ATTENTION! This is a map, not a list, even when we treat it as such.##             mod_rewrite parses it for key/value pairs, so at least a##             dummy value "-" must be present for each entry.##193.102.180.41 -bsdti1.sdm.de  -192.76.162.40  -</pre></div>        </dd>      </dl>        <h3>Proxy Deny</h3>            <dl>        <dt>Description:</dt>        <dd>          <p>How can we forbid a certain host or even a user of a          special host from using the Apache proxy?</p>        </dd>        <dt>Solution:</dt>        <dd>          <p>We first have to make sure <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>          is below(!) <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> in the Configuration          file when compiling the Apache webserver. This way it gets          called <em>before</em> <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. Then we          configure the following for a host-dependent deny...</p><div class="example"><pre>RewriteCond %{REMOTE_HOST} <strong>^badhost\.mydomain\.com$</strong>RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]</pre></div>          <p>...and this one for a user@host-dependent deny:</p><div class="example"><pre>RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST}  <strong>^badguy@badhost\.mydomain\.com$</strong>RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]</pre></div>        </dd>      </dl>        <h3>Special Authentication Variant</h3>            <dl>        <dt>Description:</dt>        <dd>          <p>Sometimes a very special authentication is needed, for          instance a authentication which checks for a set of          explicitly configured users. Only these should receive          access and without explicit prompting (which would occur          when using the Basic Auth via <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code>).</p>        </dd>        <dt>Solution:</dt>        <dd>          <p>We use a list of rewrite conditions to exclude all except          our friends:</p><div class="example"><pre>RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^friend1@client1.quux-corp\.com$</strong>RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^friend2</strong>@client2.quux-corp\.com$RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} <strong>!^friend3</strong>@client3.quux-corp\.com$RewriteRule ^/~quux/only-for-friends/      -                                 [F]</pre></div>        </dd>      </dl>        <h3>Referer-based Deflector</h3>            <dl>        <dt>Description:</dt>        <dd>          <p>How can we program a flexible URL Deflector which acts          on the "Referer" HTTP header and can be configured with as          many referring pages as we like?</p>        </dd>        <dt>Solution:</dt>        <dd>          <p>Use the following really tricky ruleset...</p><div class="example"><pre>RewriteMap  deflector txt:/path/to/deflector.mapRewriteCond %{HTTP_REFERER} !=""RewriteCond ${deflector:%{HTTP_REFERER}} ^-$RewriteRule ^.* %{HTTP_REFERER} [R,L]RewriteCond %{HTTP_REFERER} !=""RewriteCond ${deflector:%{HTTP_REFERER}|NOT-FOUND} !=NOT-FOUNDRewriteRule ^.* ${deflector:%{HTTP_REFERER}} [R,L]</pre></div>          <p>... in conjunction with a corresponding rewrite          map:</p><div class="example"><pre>####  deflector.map##http://www.badguys.com/bad/index.html    -http://www.badguys.com/bad/index2.html   -http://www.badguys.com/bad/index3.html   http://somewhere.com/</pre></div>          <p>This automatically redirects the request back to the          referring page (when "<code>-</code>" is used as the value          in the map) or to a specific URL (when an URL is specified          in the map as the second argument).</p>        </dd>      </dl>      </div></div><div class="bottomlang"><p><span>Available Languages: </span><a href="../en/rewrite/rewrite_guide_advanced.html" title="English">&nbsp;en&nbsp;</a></p></div><div id="footer"><p class="apache">Copyright 2007 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="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div></body></html>

⌨️ 快捷键说明

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