📄 mod_rewrite.html.en
字号:
permissions)<br /> Treats the <em>TestString</em> as a pathname and tests whether or not it exists, and has executable permissions. These permissions are determined according to the underlying OS.</li> <li>'<strong>-F</strong>' (is existing file, via subrequest)<br /> Checks whether or not <em>TestString</em> is a valid file, accessible via all the server's currently-configured access controls for that path. This uses an internal subrequest to do the check, so use it with care - it can impact your server's performance!</li> <li>'<strong>-U</strong>' (is existing URL, via subrequest)<br /> Checks whether or not <em>TestString</em> is a valid URL, accessible via all the server's currently-configured access controls for that path. This uses an internal subrequest to do the check, so use it with care - it can impact your server's performance!</li> </ul><div class="note"><h3>Note:</h3> All of these tests can also be prefixed by an exclamation mark ('!') to negate their meaning.</div> </li> <li>You can also set special flags for <em>CondPattern</em> by appending <strong><code>[</code><em>flags</em><code>]</code></strong> as the third argument to the <code>RewriteCond</code> directive, where <em>flags</em> is a comma-separated list of any of the following flags: <ul> <li>'<strong><code>nocase|NC</code></strong>' (<strong>n</strong>o <strong>c</strong>ase)<br /> This makes the test case-insensitive - differences between 'A-Z' and 'a-z' are ignored, 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 condition/rule pair three times. </li> <li>'<strong><code>novary|NV</code></strong>' (<strong>n</strong>o <strong>v</strong>ary)<br /> If a HTTP header is used in the condition, this flag prevents this header from being added to the Vary header of the response. <br /> Using this flag might break proper caching of the response if the representation of this response varies on the value of this header. So this flag should be only used if the meaning of the Vary header is well understood. </li> </ul> </li> </ol> <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>Explanation: If you use a browser which identifies itself as 'Mozilla' (including Netscape Navigator, Mozilla etc), then you get the max homepage (which could include frames, or other special features). If you use the Lynx browser (which is terminal-based), then you get the min homepage (which could be a version designed for easy, text-only browsing). If neither of these conditions apply (you use any other browser, or your browser identifies itself as something non-standard), you get the std (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 rewrite configurations are not inherited by virtual hosts. This means that you need to have a <code>RewriteEngine on</code> directive for each virtual host in which you wish to use rewrite rules.</p> <p><code class="directive">RewriteMap</code> directives of the type <code>prg</code> are not started during server initialization if they're defined in a context that does not have <code class="directive">RewriteEngine</code> set to <code>on</code></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="RewriteLock" id="RewriteLock">RewriteLock</a> <a name="rewritelock" id="rewritelock">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the name of the lock file used for <code class="directive"><a href="#rewritemap">RewriteMap</a></code>synchronization</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteLock <em>file-path</em></code></td></tr><tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</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>This directive sets the filename for a synchronization lockfile which mod_rewrite needs to communicate with <code class="directive"><a href="#rewritemap">RewriteMap</a></code> <em>programs</em>. Set this lockfile to a local path (not on a NFS-mounted device) when you want to use a rewriting map-program. It is not required for other types of rewriting maps.</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="RewriteLog" id="RewriteLog">RewriteLog</a> <a name="rewritelog" id="rewritelog">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the name of the file used for logging rewrite engineprocessing</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteLog <em>file-path</em></code></td></tr><tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</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">RewriteLog</code> directive sets the name of the file to which the server logs any rewriting actions it performs. If the name does not begin with a slash ('<code>/</code>') then it is assumed to be relative to the <em>Server Root</em>. The directive should occur only once per server config.</p><div class="note"> To disable the logging of rewriting actions it is not recommended to set <em>Filename</em> to <code>/dev/null</code>, because although the rewriting engine does not then output to a logfile it still creates the logfile output internally. <strong>This will slow down the server with no advantage to the administrator!</strong> To disable logging either remove or comment out the <code class="directive">RewriteLog</code> directive or use <code>RewriteLogLevel 0</code>!</div><div class="note"><h3>Security</h3>See the <a href="../misc/security_tips.html">Apache Security Tips</a>document for details on how your security could be compromised if thedirectory where logfiles are stored is writable by anyone other thanthe user that starts the server.</div><div class="example"><h3>Example</h3><p><code>RewriteLog "/usr/local/var/apache/logs/rewrite.log"</code></p></div></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="RewriteLogLevel" id="RewriteLogLevel">RewriteLogLevel</a> <a name="rewriteloglevel" id="rewriteloglevel">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the verbosity of the log file used by the rewriteengine</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteLogLevel <em>Level</em></code></td></tr><tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>RewriteLogLevel 0</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</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">RewriteLogLevel</code> directive sets the verbosity level of the rewriting logfile. The default level 0 means no logging, while 9 or more means that practically all actions are logged.</p> <p>To disable the logging of rewriting actions simply set <em>Level</em> to 0. This disables all rewrite action logs.</p><div class="note"> Using a high value for <em>Level</em> will slow down your Apache server dramatically! Use the rewriting logfile at a <em>Level</em> greater than 2 only for debugging!</div><div class="example"><h3>Example</h3><p><code>RewriteLogLevel 3</code></p></div></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="RewriteMap" id="RewriteMap">RewriteMap</a> <a name="rewritemap" id="rewritemap">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Defines a mapping function for key-lookup</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RewriteMap <em>MapName</em> <em>MapType</em>:<em>MapSource</em></code></td></tr><tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</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><tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The choice of different dbm types is available inApache 2.0.41 and later</td></tr></table> <p>The <code class="directive">RewriteMap</code> directive defines a <em>Rewriting Map</em> which can be used inside rule substitution strings by the mapping-functions to insert/substitute fields through a key lookup. The source of this lookup can be of various types.</p> <p>The <a id="mapfunc" name="mapfunc"><em>MapName</em></a> is the name of the map and will be used to specify a mapping-function for the substitution strings of a rewriting rule via one of the following constructs:</p> <p class="indent"> <strong><code>${</code> <em>MapName</em> <code>:</code> <em>LookupKey</em> <code>}</code><br /> <code>${</code> <em>MapName</em> <code>:</code> <em>LookupKey</em> <code>|</code> <em>DefaultValue</em> <code>}</code></strong> </p> <p>When such a construct occurs, the map <em>MapName</em> is consulted and the key <em>LookupKey</em> is looked-up. If the key is found, the map-function construct is substituted by <em>SubstValue</em>. If the key is not found then it is substituted by <em>DefaultValue</em> or by the empty string if no <em>DefaultValue</em> was specified.</p> <p>For example, you might define a <code class="directive">RewriteMap</code> as:</p> <div class="example"><p><code> RewriteMap examplemap txt:/path/to/file/map.txt
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -