<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AskApache &#187; Search Results  &#187;  wget</title>
	<atom:link href="http://www.askapache.com/search/wget/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.askapache.com</link>
	<description>Advanced Web Development</description>
	<lastBuildDate>Thu, 26 Apr 2012 11:29:28 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Advanced Linux Debugging using a Bootloader (GRUB)</title>
		<link>http://www.askapache.com/linux/advanced-linux-grub.html</link>
		<comments>http://www.askapache.com/linux/advanced-linux-grub.html#comments</comments>
		<pubDate>Thu, 07 Apr 2011 16:35:41 +0000</pubDate>
		<dc:creator>AskApache</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.askapache.com/?p=4846</guid>
		<description><![CDATA[<p>As an example, here is the boot line that I am using at the moment on an older Dell Desktop, just to illustrate module parameters and environment vars.  </p>
<pre>title  Arch Linux X-256
kernel /vmlinuz26 root=/dev/disk/by-label/ROOT ro rootwait pause_on_oops=5 panic=60 i915.modeset=1 no_console_suspend ipv6.disable=1 TERM=xterm-256color quiet 5
initrd /kernel26.img</pre>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.askapache.com/linux/advanced-linux-grub.html"></a><a href="http://www.askapache.com/linux/advanced-linux-grub.html"><cite>AskApache.com</cite></a></p><p>This is part of the <a href="https://wiki.archlinux.org/index.php/GRUB">GRUB article on the Arch Linux wiki that I contributed</a>.   As of now, just a copy.</p>

<p>The grub <code>menu.lst</code> provides for a convenient way to add a number of entries with <a href="http://www.kernel.org/doc/Documentation/kernel-parameters.txt" class="external text" rel="nofollow">extended kernel parameters</a> to configure all sorts of advanced settings to enable you to quickly and conveniently boot into your existing system with varying levels of debugging output.  It's very easy and useful to create several levels of debugging just by adding additional entries to your grub configuration. And if you ever have issues or problems down the road due to a power-failure or hardware failure, it can save you hours of trouble, and of course nothing can beat debugging output when it comes to learning about your system.</p>

<h2><span class="mw-headline" id="Useful_Menu.lst_Entries">Useful Menu.lst Entries</span></h2>
<p>If you are interested in debugging, then you deserve some grub entries for powerusers, here are a few that I like (just add to your <code>menu.lst</code>).</p>

<pre>title Shutdown the Computer
halt
&nbsp;
title Reboot the Computer
reboot
&nbsp;
title Command Line
commandline
&nbsp;
title Install GRUB to hd0 MBR
root (hd0,0)
setup (hd0)
&nbsp;
title Matrix
color green/black light-green/green
&nbsp;
title Scan for /boot/grub/menu.lst
find --set-root --ignore-floppies /boot/grub/menu.lst
configfile /boot/grub/menu.lst
&nbsp;
title Scan for /boot/menu.lst
find --set-root --ignore-floppies /menu.lst
configfile /boot/menu.lst
&nbsp;
# http://www.vortex.prodigynet.co.uk/x86test/
title    Run x86test (CPU Info)
kernel /boot/x86test_zImage.bin
#wget http://www.vortex.prodigynet.co.uk/x86test/x86test_zImage.bin
&nbsp;
# http://www.memtest.org/
title    Run memtest86+ (Memory Testing)
kernel /boot/memtest86+-1.70.bin</pre>

<h2> <span class="mw-headline" id="Light_Debug">Light Debug</span></h2>
<p>A quick way to see more verbose messages on your console is to bootup your normal grub entry after appending <strong>verbose</strong> to the kernel line.  This simple word added to your kernel line turns on more logging thanks to the <code>/etc/rc.sysinit</code> file, which at the top of the file runs:</p>
<pre>if /bin/grep -q " verbose" /proc/cmdline; then /bin/dmesg -n 8; fi</pre>
<p>Very simple way to get a bit more messages and debug output in your logs.</p>
<pre>title  Arch Linux DEBUG Light
kernel /vmlinuz26 root=/dev/disk/by-label/ROOT ro rootwait verbose
initrd /kernel26.img</pre>

<h2> <span class="mw-headline" id="Medium_Debug">Medium Debug</span></h2>
<p>This example <code>menu.lst</code> entry turns on real logging that is set by the kernel and not in an init script.  Adding the <strong>debug</strong> kernel parameter to your kernel line is recognized by a lot of linux internals and enables quite a bit of debugging compared to the default. </p>

<pre>title Arch Linux DEBUG Medium
kernel /vmlinuz26 root=/dev/disk/by-label/ROOT ro rootdelay=5 panic=10 debug
initrd /kernel26.img</pre>

<h2> <span class="mw-headline" id="Heavy_Debug">Heavy Debug</span></h2>
<p>An even more impressive kernel parameter is the <strong>ignore_loglevel</strong>, which causes the system to ignore any loglevel and keeps the internal loglevel at the maximum debugging level, basically rendering dmesg unable to lower the debug level.</p>
<pre>title Arch Linux DEBUG Heavy
kernel /vmlinuz26 root=/dev/disk/by-label/ROOT ro rootdelay=5 panic=10 debug ignore_loglevel
initrd /kernel26.img</pre>

<h2> <span class="mw-headline" id="Extreme_Debug">Extreme Debug</span></h2>
<p>If the "Heavy Debug" seemed like a lot of output, thats about 1/2 of the logging that occurs with this example.  This does a couple things, it uses the <strong>earlyprintk</strong> parameter to setup your kernel for "early" "printing" of messages to your "vga" screen.  The <strong>,keep</strong> just lets it stay on the screen longer.  This will let you see logs that normally are hidden due to the boot-up process.
This also changes the log buffer length to 10MB, and also instructs that any fatal signals be printed with <strong>print_fatal_signals</strong>.  The last one, <strong>sched_debug</strong>, you can look up in the very excellent kernel documentation on <a href="http://www.kernel.org/doc/Documentation/kernel-parameters.txt" class="external text" rel="nofollow">kernel parameters</a>.</p>

<pre>title Arch Linux DEBUG Extreme
kernel /vmlinuz26 root=/dev/disk/by-label/ROOT ro debug ignore_loglevel log_buf_len=10M print_fatal_signals=1 LOGLEVEL=8 earlyprintk=vga,keep sched_debug
initrd /kernel26.img</pre>

<h2> <span class="mw-headline" id="Insane_Debug">Insane Debug</span></h2>
<p>The first few debugging examples showed some really nice kernel parameters to turn on really verbose debugging.  This kind of debugging is absolutely critical if you want to max out your system or just learn more about what is going on behind the scenes.  But there is a final trick that is my favorite, it's the ability to set both environment variables, and more importantly, module parameters at boot.</p>

<p>As an example, here is the boot line that I am using at the moment on an older Dell Desktop, just to illustrate module parameters and environment vars.  </p>
<pre>title  Arch Linux X-256
kernel /vmlinuz26 root=/dev/disk/by-label/ROOT ro rootwait pause_on_oops=5 panic=60 i915.modeset=1 no_console_suspend ipv6.disable=1 TERM=xterm-256color quiet 5
initrd /kernel26.img</pre>
<p>Since it's low on both memory and CPU, I disable ipv6. I also turn on kernel modesetting for the i915 video card, set my terminal to be xterm-256color, and boot straight into <a href="https://wiki.archlinux.org/index.php/Xorg" title="Xorg">X</a>.  This lets me use a very optimized arch-linux configuration, amazing how fast thanks to using <a href="https://wiki.archlinux.org/index.php/SLiM" title="SLiM">slim</a> as the login manager, <a href="https://wiki.archlinux.org/index.php/Ratpoison" title="Ratpoison">ratpoison</a> as my <a href="https://wiki.archlinux.org/index.php/Display_Manager" title="Display Manager">window manager</a>, and terminal with <a href="https://wiki.archlinux.org/index.php/Tmux" title="Tmux">tmux</a> as my login shell, all from boot, as the pstree shows (plus <a href="https://wiki.archlinux.org/index.php/Synergy" title="Synergy">Synergy</a>!).</p>
<pre>init,1
  |-slim,3096
  |   |-X,3098 -nolisten tcp vt07 -auth /var/run/slim.auth
  |   `-ratpoison,3107,askapache
  |       |-terminal,5341 -x sh -c exec /usr/bin/tmux -2 -l -u -q attach -d -t tmux-askapache
  |       |   |-bash,11165
  |       |   |-tmux,5345 -2 -l -u -q attach -d -t tmux-askapache
  |       |   `-{terminal},5346
  |       `-xscreensaver,3113 -no-splash
  |-synergyc,6121,galileo -f --name galileo-fire --restart 10.66.66.2:26666
  |
  `-tmux,5348,askapache -2 -l -u -q attach -d -t tmux-askapache
      |-bash,5351
      |   `-ssh,9969 lug@askapache.com
      `-bash,5868
         `-vim,11149 -p sda1/grub/menu.lst /boot/grub/menu.lst</pre>
<p>That kind of optimized system is only possible if you first can figure out your system, by debugging both the kernel as previously illustrated, debugging the init process, and most importantly, by debugging the modules enabled for your system's hardware/firmware/software.  Debugging modules is challenging but worth the effort, and then you are able to do some truly insane debugging from grub like the following example, note that the actual grub entry is all on one line, but I split it into 4 lines so you could see it all.  This basically turns on every module on this little Dell desktop to be at the absolute max debug level.  There is so much logging when I boot this that the system grinds to a halt and is slower than a TI-89 calculator (See <a href="https://wiki.archlinux.org/index.php/Improve_Boot_Performance" title="Improve Boot Performance">Improve Boot Performance</a>).</p>
<pre>title  Arch Linux DEBUG INSANE
kernel /vmlinuz26 root=/dev/disk/by-label/ROOT ro rootwait ignore_loglevel debug debug_locks_verbose=1 sched_debug initcall_debug mminit_loglevel=4 udev.log_priority=8
       loglevel=8 earlyprintk=vga,keep log_buf_len=10M print_fatal_signals=1 apm.debug=Y i8042.debug=Y drm.debug=1 scsi_logging_level=1 usbserial.debug=Y
       option.debug=Y pl2303.debug=Y firewire_ohci.debug=1 hid.debug=1 pci_hotplug.debug=Y pci_hotplug.debug_acpi=Y shpchp.shpchp_debug=Y apic=debug
       show_lapic=all hpet=verbose lmb=debug pause_on_oops=5 panic=10 sysrq_always_enabled
initrd /kernel26.img</pre>
<p>A couple key items from that grub entry are <strong>sysrq_always_enabled</strong> which forces on the sysrq magic, which really is a lifesaver when debugging at this level as your machine will freeze/stop-responding sometimes and it's nice to use sysrq to kill all tasks, change the loglevel, unmount all filesystems, or do a hard reboot.  Another key parameter is the <strong>initcall_debug</strong>, which debugs the init process in excruciating detail.  Very useful at times.  The last parametery I find very useful is the <strong>udev.log_priority=8</strong> to turn on <a href="https://wiki.archlinux.org/index.php/Udev" title="Udev">udev</a> logging.  </p>


<h2><span class="mw-headline" id="Break_Into_Init">Break Into Init</span></h2>
<p>For instance, If you add <strong>break=y</strong> to your kernel cmdline, init will pause early in the <a href="https://wiki.archlinux.org/index.php/Arch_Boot_Process" title="Arch Boot Process">boot process</a> (after loading modules) and launch an interactive sh shell which can be used for troubleshooting purposes. (Normal boot continues after logout.)  This is very similar to the shell that shows up if your computer gets turned off before it is able to shutdown properly.  But using this parameter lets you enter into this mode differently at will.</p>
<pre>title  Arch Linux Init Break
kernel /vmlinuz26 root=/dev/disk/by-label/ROOT ro rootwait break=y
initrd /kernel26.img</pre>

<h2><span class="mw-headline" id="Debugging_init">Debugging init</span></h2>

<p>This awesome parameter <strong>udev.log_priority=8</strong> does the same thing as editing the file <code>/etc/udev/udev.conf</code> except it executes earlier, turning on debugging output for <a href="https://wiki.archlinux.org/index.php/Udev" title="Udev">udev</a>.  If you want to know your hardware, that is the key parameter right there.  Another trick is if you change the <code>/etc/udev/udev.conf</code> to be verbose, then you can make your initrd image include that file to turn on verbose udeb debugging by adding it to your {{Filename|/etc/mkinitcpio.conf} like:</p>
<pre>FILES="/etc/modprobe.d/modprobe.conf /etc/udev/udev.conf"</pre>
<p>, which on arch is as easy as </p>
<pre># mkinitcpio -p kernel26</pre>
<p>Debugging <a href="https://wiki.archlinux.org/index.php/Udev" title="Udev">udev</a> is key because the <a href="https://wiki.archlinux.org/index.php/Initrd" title="Initrd">initrd</a> performs a <a href="https://wiki.archlinux.org/index.php/Change_Root" title="Change Root">root change</a> at the end of its run to usually launch a program like /sbin/init as part of a chroot, and unless the new file system has a valid /dev directory, udev must be initialized before invoking chroot in order to provide <code>/dev/console</code>.  </p>
<pre>exec chroot . /sbin/init &lt;dev/console &gt;dev/console 2&gt;&amp;1</pre>
<p>So basically, you aren't able to view the logs that are generated before /dev/console is initialized by udev or by a special initrd you compiled yourself.  One method the kernel developers use to be able to still get the log messages generated before /dev/console is available is to provide an alternative console that you can enable or disable from grub.</p>



<h2><span class="mw-headline" id="Net_Console">Net Console</span></h2>
<p>If you read through the kernel documentation regarding debugging, you will hear about Netconsole, which can be loaded from the kernel line in GRUB, compiled into your kernel, or loaded at runtime as a module.  Having a netconsole entry in your <code>menu.lst</code> is most excellent for debugging slower computers like old laptops or thin-clients.  It's easy to use.  Just setup a 2nd computer (running arch) to accept syslog requests on a remote port, very fast and quick to do on arch-linux, 1 line to syslog.conf.  Then you could use a log-color-parser like ccze to view all syslog logs, or just tail your everything.log. Then on your laptop, boot up and select the netconsole entry from the grub menu, and you will start seeing as much logging as you want on your syslog system.  This logging lets you view even earlier log output than is available with the earlyprintk=vga kernel parameter, as netconsole is used by kernel hackers and developers, so it's very powerful.</p>
<pre>title  Arch Linux DEBUG Netconsole
kernel /vmlinuz26 root=/dev/disk/by-label/ROOT ro netconsole=514@10.0.0.2/12:34:56:78:9a:bc debug ignore_loglevel
initrd /kernel26.img</pre>

<h2><span class="mw-headline" id="Hijacking_cmdline">Hijacking cmdline</span></h2>
<p>If you do not have access to GRUB or the kernel boottime cmdline, like on a server or virtual machine, as long as you have root permissions you can still enable this kind of simplistic verbose logging using a neat hack.  While you cannot modify the <code>/proc/cmdline</code> even as root, you can place your own cmdline file on top of /proc/cmdline, so that accessing /proc/cmdline actually accesses your file.</p>
<p>For example if I <strong>cat /proc/cmdline</strong>, I have the following:</p>
<pre>root=/dev/disk/by-label/ROOT ro console=tty1 logo.nologo quiet</pre>
<p>So I use a simple sed command to replace <strong>quiet</strong> with <strong>verbose</strong> like:</p>
<pre>sed &#039;s/ quiet/ verbose/&#039; /proc/cmdline &gt; /root/cmdline</pre>
<p>Then I bind mount /root/cmdline so that it becomes /proc/cmdline, using the <strong>-n</strong> option to mount so that this mount won't be recorded in the systems mtab.</p>
<pre>mount -n --bind -o ro /root/cmdline /proc/cmdline</pre>
<p>Now if I <strong>cat /proc/cmdline</strong>, I have the following:</p>
<pre>root=/dev/disk/by-label/ROOT ro console=tty1 logo.nologo verbose</pre><p><a href="http://www.askapache.com/linux/advanced-linux-grub.html"></a><a href="http://www.askapache.com/linux/advanced-linux-grub.html">Advanced Linux Debugging using a Bootloader (GRUB)</a> originally appeared on <cite>AskApache.com</cite> </p>]]></content:encoded>
			<wfw:commentRss>http://www.askapache.com/linux/advanced-linux-grub.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP Status Codes and Htaccess ErrorDocuments</title>
		<link>http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html</link>
		<comments>http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#comments</comments>
		<pubDate>Tue, 04 Jan 2011 20:56:15 +0000</pubDate>
		<dc:creator>AskApache</dc:creator>
				<category><![CDATA[Htaccess]]></category>

		<guid isPermaLink="false">http://www.askapache.com.com/htaccess/wow-i-served-a-page-for-every-single-http-status-code-and-saved-headers-and-content.html</guid>
		<description><![CDATA[<p>There are a total of <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#apache-response-codes-57">57 HTTP Status Codes</a> recognized by the Apache Web Server.  Wouldn't you like to see what all those headers and their output, ErrorDocuments look like?</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html"></a><a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html"><cite>AskApache.com</cite></a></p><p><strong>I was trying to find an official, authoritative list of HTTP Status Codes</strong> but I kept finding lists that weren't authoritative or complete. So I searched and found my answer in the Apache HTTP Server source code.  Once I had the exact HTTP Status Codes and resulting Error Documents sent by Apache, I researched deeper into HTTP Status Codes by reading as many related RFC's as I could find, and several other software source codes were explored.  This is the most authoritative list I know of, if you can do better leave a comment and I'll update it.  Another thing to keep in mind, the Status code number itself is what is used by software and hardware to make determinations, the phrase returned by the status code is for the human only and does not have any weight other than informing the user.. So "503 Service Unavailable", "503 Service Temporarily Unavailable", and "503 Get the heck outta here" are all completely valid.</p>
<p class="bnote"><strong>Update March 9, 2009</strong>: A lot of sites on the web have updated their HTTP status code lists to include the HTTP Status codes listed on this page, including Wikipedia, IANA, W3C, and others, so rest assured this info is accurate and complete.  If you'd like to see how to create custom error pages for all of these errors like mine  <a href="http://www.askapache.com/show-error-506">/show-error-506</a> , then check out  <a href="http://www.askapache.com/htaccess/advanced-htaccess-ssi.html">this detailed tutorial</a>  I just posted.</p>


<h2>Contents</h2>
<ul>
    <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#apache-response-codes-57">List of All 57 HTTP Response Status Code</a> </li>
    <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#quick-start">Quick Start to triggering ErrorDocuments for each Status Code</a> </li>
    <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#automating-the-process">Automate the ErrorDocument Triggering</a>
        <ul>
            <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#redirect-code-in-htaccess">The htaccess Code</a> </li>
            <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#php-header-grabber-script">PHP script that gets and outputs the Headers/Content</a> </li>
        </ul>
    </li>
    <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#headers-returned-content">Headers and Content Returned</a> </li>
    <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#apache-source-code">Apache Source Code</a>
        <ul>
            <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#httpdh-h">httpd.h</a> </li>
            <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#http_protocol-c">http_protocol.c</a> </li>
        </ul>
    </li>
</ul>


<h2> <a href="#apache-response-codes-57" name="apache-response-codes-57" id="apache-response-codes-57">57 APACHE HTTP STATUS RESPONSE CODES</a> </h2>
<p>Once I compiled the list of Apache recognized HTTP Status Codes, I was dying to see them all in action (<em>i.e. the corresponding <strong>ErrorDocument</strong></em>).  At first I thought I would have to create a php or perl script emulating each of the 57 HTTP Status Codes, a tedious undertaking I wasn't about to do.  Instead I "asked Apache" by searching the  <a href="http://httpd.apache.org/docs/trunk/">Apache HTTP Documentation</a>  for <em>ambiguity sending Status Codes and/or triggering ErrorDocuments</em> with an Apache Directive.<br /><strong>While reading</strong> up on  <a href="http://askapache.info/trunk/mod/mod_alias.html">mod_alias</a>  and the  <a href="http://askapache.info/trunk/mod/mod_alias.html#redirect">Redirect</a>  directive I found:</p>
<blockquote cite="http://httpd.apache.org/docs/trunk/mod/mod_alias.html#redirect"><cite>Apache Docs</cite>
    <p>Syntax: <strong>Redirect [status] URL-path URL</strong> The status argument can be used to return <strong>other</strong> HTTP status codes. <strong>Other</strong> status codes can be returned by giving the numeric status code as the value of status.  If the status is between 300 and 399, the URL argument must be present, otherwise it must be omitted.</p>
</blockquote>
<dl>
    <dt><a id="code-100" title="Continue">100 Continue</a> </dt>
    <dd><a title="ErrorDocument 100" href="/e/100/">ErrorDocument Continue</a>  |  <a href="#status-100" title="Sample Continue">Sample 100 Continue</a> <br />This means that the server has received the request headers, and that the client should proceed to send the request body (in case of a request which   needs to be sent; for example, a POST request). If the request body is large, sending it to a server when a request has already been rejected based upon inappropriate headers is inefficient.   To have a server check if the request could be accepted based on the requests headers alone, a client must send Expect: 100-continue as a header in its initial request (see RFC 2616 14.20 Expect header) and check if a 100 Continue status code is received in response before continuing (or receive 417 Expectation Failed and not continue).</dd>
    <dt><a id="code-101" title="Switching Protocols">101 Switching Protocols</a> </dt>
    <dd><a title="ErrorDocument 101" href="/e/101/">ErrorDocument Switching Protocols</a>  |  <a href="#status-101" title="Sample Switching Protocols">Sample 101 Switching Protocols</a> <br />This means the requester has asked the server to switch protocols and the server is acknowledging that it will do so.[3]</dd>
    <dt><a id="code-102" title="Processing">102 Processing</a> </dt>
    <dd><a title="ErrorDocument 102" href="/e/102/">ErrorDocument Processing</a>  |  <a href="#status-102" title="Sample Processing">Sample 102 Processing</a> <br />(WebDAV) - (RFC 2518 )</dd>
    <dt><a id="code-200" title="OK">200 OK</a> </dt>
    <dd><a title="ErrorDocument 200" href="/e/200/">ErrorDocument OK</a>  |  <a href="#status-200" title="Sample OK">Sample 200 OK</a> <br />Standard response for successful HTTP requests. The actual response will depend on the request method used. In a GET request, the response will contain an   entity corresponding to the requested resource. In a POST request the response will contain an entity describing or containing the result of the action.</dd>
    <dt><a id="code-201" title="Created">201 Created</a> </dt>
    <dd><a title="ErrorDocument 201" href="/e/201/">ErrorDocument Created</a>  |  <a href="#status-201" title="Sample Created">Sample 201 Created</a> <br />The request has been fulfilled and resulted in a new resource being created.</dd>
    <dt><a id="code-202" title="Accepted">202 Accepted</a> </dt>
    <dd><a title="ErrorDocument 202" href="/e/202/">ErrorDocument Accepted</a>  |  <a href="#status-202" title="Sample Accepted">Sample 202 Accepted</a> <br />The request has been accepted for processing, but the processing has not been completed. The request might or might not eventually be acted upon, as it   might be disallowed when processing actually takes place.</dd>
    <dt><a id="code-203" title="Non-Authoritative Information">203 Non-Authoritative Information</a> </dt>
    <dd><a title="ErrorDocument 203" href="/e/203/">ErrorDocument Non-Authoritative Information</a>  |  <a href="#status-203" title="Sample Non-Authoritative Information">Sample 203 Non-Authoritative Information</a> <br />The server successfully processed the request, but is returning information that may be from another source.</dd>
    <dt><a id="code-204" title="No Content">204 No Content</a> </dt>
    <dd><a title="ErrorDocument 204" href="/e/204/">ErrorDocument No Content</a>  |  <a href="#status-204" title="Sample No Content">Sample 204 No Content</a> <br />The server successfully processed the request, but is not returning any content.</dd>
    <dt><a id="code-205" title="Reset Content">205 Reset Content</a> </dt>
    <dd><a title="ErrorDocument 205" href="/e/205/">ErrorDocument Reset Content</a>  |  <a href="#status-205" title="Sample Reset Content">Sample 205 Reset Content</a> <br />The server successfully processed the request, but is not returning any content. Unlike a 204 response, this response requires that the requester   reset the document view.</dd>
    <dt><a id="code-206" title="Partial Content">206 Partial Content</a> </dt>
    <dd><a title="ErrorDocument 206" href="/e/206/">ErrorDocument Partial Content</a>  |  <a href="#status-206" title="Sample Partial Content">Sample 206 Partial Content</a> <br />The server is delivering only part of the resource due to a range header sent by the client. This is used by tools like wget to enable resuming   of interrupted downloads, or split a download into multiple simultaneous streams.</dd>
    <dt><a id="code-207" title="Multi-Status">207 Multi-Status</a> </dt>
    <dd><a title="ErrorDocument 207" href="/e/207/">ErrorDocument Multi-Status</a>  |  <a href="#status-207" title="Sample Multi-Status">Sample 207 Multi-Status</a> <br />(WebDAV) - The message body that follows is an XML message and can contain a number of separate response codes, depending on how many sub-requests   were made.</dd>
    <dt><a id="code-226" title="IM Used">226 IM Used</a> </dt>
    <dd><a title="ErrorDocument 226" href="/e/226/">ErrorDocument IM Used</a>  |  <a href="#status-226" title="Sample IM Used">Sample 226 IM Used</a> <br />The server has fulfilled a GET request for the resource, and the response is a representation of the result of one or more instance-manipulations   applied to the current instance.  The actual current instance might not be available except by combining this response with other previous or future responses, as appropriate for the specific   instance-manipulation(s).</dd>
    <dt><a id="code-300" title="Multiple Choices">300 Multiple Choices</a> </dt>
    <dd><a title="ErrorDocument 300" href="/e/300/">ErrorDocument Multiple Choices</a>  |  <a href="#status-300" title="Sample Multiple Choices">Sample 300 Multiple Choices</a> <br />Indicates multiple options for the resource that the client may follow. It, for instance, could be used to present different format options for   video, list files with different extensions, or word sense disambiguation.</dd>
    <dt><a id="code-301" title="Moved Permanently">301 Moved Permanently</a> </dt>
    <dd><a title="ErrorDocument 301" href="/e/301/">ErrorDocument Moved Permanently</a>  |  <a href="#status-301" title="Sample Moved Permanently">Sample 301 Moved Permanently</a> <br />This and all future requests should be directed to the given URI.</dd>
    <dt><a id="code-302" title="Found">302 Found</a> </dt>
    <dd><a title="ErrorDocument 302" href="/e/302/">ErrorDocument Found</a>  |  <a href="#status-302" title="Sample Found">Sample 302 Found</a> <br />This is the most popular redirect code[citation needed], but also an example of industrial practice contradicting the standard. HTTP/1.0 specification   (RFC 1945 ) required the client to perform a temporary redirect (the original describing phrase was "Moved Temporarily"), but popular browsers implemented it as a 303 See Other. Therefore,   HTTP/1.1 added status codes 303 and 307 to disambiguate between the two behaviours. However, the majority of Web applications and frameworks still use the 302 status code as if it were the   303.</dd>
    <dt><a id="code-303" title="See Other">303 See Other</a> </dt>
    <dd><a title="ErrorDocument 303" href="/e/303/">ErrorDocument See Other</a>  |  <a href="#status-303" title="Sample See Other">Sample 303 See Other</a> <br />The response to the request can be found under another URI using a GET method. When received in response to a PUT, it should be assumed that the   server has received the data and the redirect should be issued with a separate GET message.</dd>
    <dt><a id="code-304" title="Not Modified">304 Not Modified</a> </dt>
    <dd><a title="ErrorDocument 304" href="/e/304/">ErrorDocument Not Modified</a>  |  <a href="#status-304" title="Sample Not Modified">Sample 304 Not Modified</a> <br />Indicates the resource has not been modified since last requested. Typically, the HTTP client provides a header like the If-Modified-Since header   to provide a time against which to compare. Utilizing this saves bandwidth and reprocessing on both the server and client, as only the header data must be sent and received in comparison to   the entirety of the page being re-processed by the server, then resent using more bandwidth of the server and client.</dd>
    <dt><a id="code-305" title="Use Proxy">305 Use Proxy</a> </dt>
    <dd><a title="ErrorDocument 305" href="/e/305/">ErrorDocument Use Proxy</a>  |  <a href="#status-305" title="Sample Use Proxy">Sample 305 Use Proxy</a> <br />Many HTTP clients (such as Mozilla[4] and Internet Explorer) do not correctly handle responses with this status code, primarily for security   reasons.</dd>
    <dt><a id="code-306" title="Switch Proxy">306 Switch Proxy</a> </dt>
    <dd><a title="ErrorDocument 306" href="/e/306/">ErrorDocument Switch Proxy</a>  |  <a href="#status-306" title="Sample Switch Proxy">Sample 306 Switch Proxy</a> <br />No longer used.</dd>
    <dt><a id="code-307" title="Temporary Redirect">307 Temporary Redirect</a> </dt>
    <dd><a title="ErrorDocument 307" href="/e/307/">ErrorDocument Temporary Redirect</a>  |  <a href="#status-307" title="Sample Temporary Redirect">Sample 307 Temporary Redirect</a> <br />In this occasion, the request should be repeated with another URI, but future requests can still use the original URI. In contrast to 303,   the request method should not be changed when reissuing the original request. For instance, a POST request must be repeated using another POST request.</dd>
    <dt><a id="code-400" title="Bad Request">400 Bad Request</a> </dt>
    <dd><a title="ErrorDocument 400" href="/e/400/">ErrorDocument Bad Request</a>  |  <a href="#status-400" title="Sample Bad Request">Sample 400 Bad Request</a> <br />The request contains bad syntax or cannot be fulfilled.</dd>
    <dt><a id="code-401" title="Unauthorized">401 Unauthorized</a> </dt>
    <dd><a title="ErrorDocument 401" href="/e/401/">ErrorDocument Unauthorized</a>  |  <a href="#status-401" title="Sample Unauthorized">Sample 401 Unauthorized</a> <br />Similar to 403 Forbidden, but specifically for use when authentication is possible but has failed or not yet been provided. The response must   include a WWW-Authenticate header field containing a challenge applicable to the requested resource. See Basic access authentication and Digest access authentication.</dd>
    <dt><a id="code-402" title="Payment Required">402 Payment Required</a> </dt>
    <dd><a title="ErrorDocument 402" href="/e/402/">ErrorDocument Payment Required</a>  |  <a href="#status-402" title="Sample Payment Required">Sample 402 Payment Required</a> <br />The original intention was that this code might be used as part of some form of digital cash or micropayment scheme, but that has not happened,   and this code has never been used.</dd>
    <dt><a id="code-403" title="Forbidden">403 Forbidden</a> </dt>
    <dd><a title="ErrorDocument 403" href="/e/403/">ErrorDocument Forbidden</a>  |  <a href="#status-403" title="Sample Forbidden">Sample 403 Forbidden</a> <br />The request was a legal request, but the server is refusing to respond to it. Unlike a 401 Unauthorized response, authenticating will make no   difference.</dd>
    <dt><a id="code-404" title="Not Found">404 Not Found</a> </dt>
    <dd><a title="ErrorDocument 404" href="/e/404/">ErrorDocument Not Found</a>  |  <a href="#status-404" title="Sample Not Found">Sample 404 Not Found</a> <br />The requested resource could not be found but may be available again in the future. Subsequent requests by the client are permissible.</dd>
    <dt><a id="code-405" title="Method Not Allowed">405 Method Not Allowed</a> </dt>
    <dd><a title="ErrorDocument 405" href="/e/405/">ErrorDocument Method Not Allowed</a>  |  <a href="#status-405" title="Sample Method Not Allowed">Sample 405 Method Not Allowed</a> <br />A request was made of a resource using a request method not supported by that resource; for example, using GET on a form which requires data   to be presented via POST, or using PUT on a read-only resource.</dd>
    <dt><a id="code-406" title="Not Acceptable">406 Not Acceptable</a> </dt>
    <dd><a title="ErrorDocument 406" href="/e/406/">ErrorDocument Not Acceptable</a>  |  <a href="#status-406" title="Sample Not Acceptable">Sample 406 Not Acceptable</a> <br />The requested resource is only capable of generating content not acceptable according to the Accept headers sent in the request.</dd>
    <dt><a id="code-407" title="Proxy Authentication Required">407 Proxy Authentication Required</a> </dt>
    <dd><a title="ErrorDocument 407" href="/e/407/">ErrorDocument Proxy Authentication Required</a>  |  <a href="#status-407" title="Sample Proxy Authentication Required">Sample 407 Proxy Authentication Required</a> <br />Required</dd>
    <dt><a id="code-408" title="Request Timeout">408 Request Timeout</a> </dt>
    <dd><a title="ErrorDocument 408" href="/e/408/">ErrorDocument Request Timeout</a>  |  <a href="#status-408" title="Sample Request Timeout">Sample 408 Request Timeout</a> <br />The server timed out waiting for the request.</dd>
    <dt><a id="code-409" title="Conflict">409 Conflict</a> </dt>
    <dd><a title="ErrorDocument 409" href="/e/409/">ErrorDocument Conflict</a>  |  <a href="#status-409" title="Sample Conflict">Sample 409 Conflict</a> <br />Indicates that the request could not be processed because of conflict in the request, such as an edit conflict.</dd>
    <dt><a id="code-410" title="Gone">410 Gone</a> </dt>
    <dd><a title="ErrorDocument 410" href="/e/410/">ErrorDocument Gone</a>  |  <a href="#status-410" title="Sample Gone">Sample 410 Gone</a> <br />Indicates that the resource requested is no longer available and will not be available again. This should be used when a resource has been intentionally   removed; however, it is not necessary to return this code and a 404 Not Found can be issued instead. Upon receiving a 410 status code, the client should not request the resource again in the   future. Clients such as search engines should remove the resource from their indexes.</dd>
    <dt><a id="code-411" title="Length Required">411 Length Required</a> </dt>
    <dd><a title="ErrorDocument 411" href="/e/411/">ErrorDocument Length Required</a>  |  <a href="#status-411" title="Sample Length Required">Sample 411 Length Required</a> <br />The request did not specify the length of its content, which is required by the requested resource.</dd>
    <dt><a id="code-412" title="Precondition Failed">412 Precondition Failed</a> </dt>
    <dd><a title="ErrorDocument 412" href="/e/412/">ErrorDocument Precondition Failed</a>  |  <a href="#status-412" title="Sample Precondition Failed">Sample 412 Precondition Failed</a> <br />The server does not meet one of the preconditions that the requester put on the request.</dd>
    <dt><a id="code-413" title="Request Entity Too Large">413 Request Entity Too Large</a> </dt>
    <dd><a title="ErrorDocument 413" href="/e/413/">ErrorDocument Request Entity Too Large</a>  |  <a href="#status-413" title="Sample Request Entity Too Large">Sample 413 Request Entity Too Large</a> <br />The request is larger than the server is willing or able to process.</dd>
    <dt><a id="code-414" title="Request-URI Too Long">414 Request-URI Too Long</a> </dt>
    <dd><a title="ErrorDocument 414" href="/e/414/">ErrorDocument Request-URI Too Long</a>  |  <a href="#status-414" title="Sample Request-URI Too Long">Sample 414 Request-URI Too Long</a> <br />The URI provided was too long for the server to process.</dd>
    <dt><a id="code-415" title="Unsupported Media Type">415 Unsupported Media Type</a> </dt>
    <dd><a title="ErrorDocument 415" href="/e/415/">ErrorDocument Unsupported Media Type</a>  |  <a href="#status-415" title="Sample Unsupported Media Type">Sample 415 Unsupported Media Type</a> <br />The request did not specify any media types that the server or resource supports. For example the client specified that an image resource   should be served as image/svg+xml, but the server cannot find a matching version of the image.</dd>
    <dt><a id="code-416" title="Requested Range Not Satisfiable">416 Requested Range Not Satisfiable</a> </dt>
    <dd><a title="ErrorDocument 416" href="/e/416/">ErrorDocument Requested Range Not Satisfiable</a>  |  <a href="#status-416" title="Sample Requested Range Not Satisfiable">Sample 416 Requested Range Not Satisfiable</a> <br />The client has asked for a portion of the file, but the server cannot supply that portion (for example, if the client asked for   a part of the file that lies beyond the end of the file).</dd>
    <dt><a id="code-417" title="Expectation Failed">417 Expectation Failed</a> </dt>
    <dd><a title="ErrorDocument 417" href="/e/417/">ErrorDocument Expectation Failed</a>  |  <a href="#status-417" title="Sample Expectation Failed">Sample 417 Expectation Failed</a> <br />The server cannot meet the requirements of the Expect request-header field.</dd>
    <dt><a id="code-418" title="I'm a teapot">418 I'm a teapot</a> </dt>
    <dd><a title="ErrorDocument 418" href="/e/418/">ErrorDocument I'm a teapot</a>  |  <a href="#status-418" title="Sample I'm a teapot">Sample 418 I'm a teapot</a> <br />The HTCPCP server is a teapot. The responding entity MAY be short and stout. Defined by the April Fools specification RFC 2324. See Hyper Text   Coffee Pot Control Protocol for more information.</dd>
    <dt><a id="code-422" title="Unprocessable Entity">422 Unprocessable Entity</a> </dt>
    <dd><a title="ErrorDocument 422" href="/e/422/">ErrorDocument Unprocessable Entity</a>  |  <a href="#status-422" title="Sample Unprocessable Entity">Sample 422 Unprocessable Entity</a> <br />(WebDAV) (RFC 4918 ) - The request was well-formed but was unable to be followed due to semantic errors.</dd>
    <dt><a id="code-423" title="Locked">423 Locked</a> </dt>
    <dd><a title="ErrorDocument 423" href="/e/423/">ErrorDocument Locked</a>  |  <a href="#status-423" title="Sample Locked">Sample 423 Locked</a> <br />(WebDAV) (RFC 4918 ) - The resource that is being accessed is locked</dd>
    <dt><a id="code-424" title="Failed Dependency">424 Failed Dependency</a> </dt>
    <dd><a title="ErrorDocument 424" href="/e/424/">ErrorDocument Failed Dependency</a>  |  <a href="#status-424" title="Sample Failed Dependency">Sample 424 Failed Dependency</a> <br />(WebDAV) (RFC 4918 ) - The request failed due to failure of a previous request (e.g. a PROPPATCH).</dd>
    <dt><a id="code-425" title="Unordered Collection">425 Unordered Collection</a> </dt>
    <dd><a title="ErrorDocument 425" href="/e/425/">ErrorDocument Unordered Collection</a>  |  <a href="#status-425" title="Sample Unordered Collection">Sample 425 Unordered Collection</a> <br />Defined in drafts of WebDav Advanced Collections, but not present in "Web Distributed Authoring and Versioning (WebDAV) Ordered Collections   Protocol" (RFC 3648).</dd>
    <dt><a id="code-426" title="Upgrade Required">426 Upgrade Required</a> </dt>
    <dd><a title="ErrorDocument 426" href="/e/426/">ErrorDocument Upgrade Required</a>  |  <a href="#status-426" title="Sample Upgrade Required">Sample 426 Upgrade Required</a> <br />(RFC 2817 ) - The client should switch to TLS/1.0.</dd>
    <dt><a id="code-449" title="Retry With">449 Retry With</a> </dt>
    <dd><a title="ErrorDocument 449" href="/e/449/">ErrorDocument Retry With</a>  |  <a href="#status-449" title="Sample Retry With">Sample 449 Retry With</a> <br />A Microsoft extension. The request should be retried after doing the appropriate action.</dd>
    <dt><a id="code-500" title="Internal Server Error">500 Internal Server Error</a> </dt>
    <dd><a title="ErrorDocument 500" href="/e/500/">ErrorDocument Internal Server Error</a>  |  <a href="#status-500" title="Sample Internal Server Error">Sample 500 Internal Server Error</a> <br />A generic error message, given when no more specific message is suitable.</dd>
    <dt><a id="code-501" title="Not Implemented">501 Not Implemented</a> </dt>
    <dd><a title="ErrorDocument 501" href="/e/501/">ErrorDocument Not Implemented</a>  |  <a href="#status-501" title="Sample Not Implemented">Sample 501 Not Implemented</a> <br />The server either does not recognise the request method, or it lacks the ability to fulfil the request.</dd>
    <dt><a id="code-502" title="Bad Gateway">502 Bad Gateway</a> </dt>
    <dd><a title="ErrorDocument 502" href="/e/502/">ErrorDocument Bad Gateway</a>  |  <a href="#status-502" title="Sample Bad Gateway">Sample 502 Bad Gateway</a> <br />The server was acting as a gateway or proxy and received an invalid response from the upstream server.</dd>
    <dt><a id="code-503" title="Service Unavailable">503 Service Unavailable</a> </dt>
    <dd><a title="ErrorDocument 503" href="/e/503/">ErrorDocument Service Unavailable</a>  |  <a href="#status-503" title="Sample Service Unavailable">Sample 503 Service Unavailable</a> <br />The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.</dd>
    <dt><a id="code-504" title="Gateway Timeout">504 Gateway Timeout</a> </dt>
    <dd><a title="ErrorDocument 504" href="/e/504/">ErrorDocument Gateway Timeout</a>  |  <a href="#status-504" title="Sample Gateway Timeout">Sample 504 Gateway Timeout</a> <br />The server was acting as a gateway or proxy and did not receive a timely request from the upstream server.</dd>
    <dt><a id="code-505" title="HTTP Version Not Supported">505 HTTP Version Not Supported</a> </dt>
    <dd><a title="ErrorDocument 505" href="/e/505/">ErrorDocument HTTP Version Not Supported</a>  |  <a href="#status-505" title="Sample HTTP Version Not Supported">Sample 505 HTTP Version Not Supported</a> <br />The server does not support the HTTP protocol version used in the request.</dd>
    <dt><a id="code-506" title="Variant Also Negotiates">506 Variant Also Negotiates</a> </dt>
    <dd><a title="ErrorDocument 506" href="/e/506/">ErrorDocument Variant Also Negotiates</a>  |  <a href="#status-506" title="Sample Variant Also Negotiates">Sample 506 Variant Also Negotiates</a> <br />(RFC 2295 ) - Transparent content negotiation for the request, results in a circular reference.</dd>
    <dt><a id="code-507" title="Insufficient Storage">507 Insufficient Storage</a> </dt>
    <dd><a title="ErrorDocument 507" href="/e/507/">ErrorDocument Insufficient Storage</a>  |  <a href="#status-507" title="Sample Insufficient Storage">Sample 507 Insufficient Storage</a> <br />(WebDAV) (RFC 4918 )</dd>
    <dt><a id="code-509" title="Bandwidth Limit Exceeded">509 Bandwidth Limit Exceeded</a> </dt>
    <dd><a title="ErrorDocument 509" href="/e/509/">ErrorDocument Bandwidth Limit Exceeded</a>  |  <a href="#status-509" title="Sample Bandwidth Limit Exceeded">Sample 509 Bandwidth Limit Exceeded</a> <br />(Apache bw/limited extension) - This status code, while used by many servers, is not specified in any RFCs.</dd>
    <dt><a id="code-510" title="Not Extended">510 Not Extended</a> </dt>
    <dd><a title="ErrorDocument 510" href="/e/510/">ErrorDocument Not Extended</a>  |  <a href="#status-510" title="Sample Not Extended">Sample 510 Not Extended</a> <br />(RFC 2774 ) - Further extensions to the request are required for the server to fulfil it.</dd>
</dl>


<h3>1xx Info / Informational</h3>
<p><code>HTTP_INFO</code> - <strong>Request received, continuing process</strong>. Indicates a provisional response, consisting only of the Status-Line and optional headers, and is terminated by an empty line.</p>
<ul>
    <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#status-100" title="Continue">100</a>  <a title="ErrorDocument 100" href="/e/100/">Continue</a>  - <code>HTTP_CONTINUE</code></li>
    <li> <a href="#status-101" title="Switching Protocols">101</a>  <a title="ErrorDocument 101" href="/e/101/">Switching Protocols</a>  - <code>HTTP_SWITCHING_PROTOCOLS</code></li>
    <li> <a href="#status-102" title="Processing">102</a>  <a title="ErrorDocument 102" href="/e/102/">Processing</a>  - <code>HTTP_PROCESSING</code></li>
</ul>


<h3>2xx Success / OK</h3>
<p><code>HTTP_SUCCESS</code> - <strong>The action was successfully received, understood, and accepted</strong>.  Indicates that the client's request was successfully received, understood, and accepted.</p>
<ul>
    <li> <a href="#status-200" title="OK">200</a>  <a title="ErrorDocument 200" href="/e/200/">OK</a>  - <code>HTTP_OK</code></li>
    <li> <a href="#status-201" title="Created">201</a>  <a title="ErrorDocument 201" href="/e/201/">Created</a>  - <code>HTTP_CREATED</code></li>
    <li> <a href="#status-202" title="Accepted">202</a>  <a title="ErrorDocument 202" href="/e/202/">Accepted</a>  - <code>HTTP_ACCEPTED</code></li>
    <li> <a href="#status-203" title="Non-Authoritative Information">203</a>  <a title="ErrorDocument 203" href="/e/203/">Non-Authoritative Information</a>  - <code>HTTP_NON_AUTHORITATIVE</code></li>
    <li> <a href="#status-204" title="No Content">204</a>  <a title="ErrorDocument 204" href="/e/204/">No Content</a>  - <code>HTTP_NO_CONTENT</code></li>
    <li> <a href="#status-205" title="Reset Content">205</a>  <a title="ErrorDocument 205" href="/e/205/">Reset Content</a>  - <code>HTTP_RESET_CONTENT</code></li>
    <li> <a href="#status-206" title="Partial Content">206</a>  <a title="ErrorDocument 206" href="/e/206/">Partial Content</a>  - <code>HTTP_PARTIAL_CONTENT</code></li>
    <li> <a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#status-207" title="Multi-Status">207</a>  <a title="ErrorDocument 207" href="/e/207/">Multi-Status</a>  - <code>HTTP_MULTI_STATUS</code></li>
</ul>


<h3>3xx Redirect</h3>
<p><code>HTTP_REDIRECT</code> - <strong>The client must take additional action to complete the request</strong>.  Indicates that further action needs to be taken by the user-agent in order to fulfill the request. The action required may be carried out by the user agent without interaction with the user if and only if the method used in the second request is GET or HEAD. A user agent should not automatically <em>redirect a request more than 5 times</em>, since such redirections usually indicate an <strong>infinite loop</strong>.</p>
<ul>
    <li> <a href="#status-300" title="Multiple Choices">300</a>  <a title="ErrorDocument 300" href="/e/300/">Multiple Choices</a>  - <code>HTTP_MULTIPLE_CHOICES</code></li>
    <li> <a href="#status-301" title="Moved Permanently">301</a>  <a title="ErrorDocument 301" href="/e/301/">Moved Permanently</a>  - <code>HTTP_MOVED_PERMANENTLY</code></li>
    <li> <a href="#status-302" title="Found">302</a>  <a title="ErrorDocument 302" href="/e/302/">Found</a>  - <code>HTTP_MOVED_TEMPORARILY</code></li>
    <li> <a href="#status-303" title="See Other">303</a>  <a title="ErrorDocument 303" href="/e/303/">See Other</a>  - <code>HTTP_SEE_OTHER</code></li>
    <li> <a href="#status-304" title="Not Modified">304</a>  <a title="ErrorDocument 304" href="/e/304/">Not Modified</a>  - <code>HTTP_NOT_MODIFIED</code></li>
    <li> <a href="#status-305" title="Use Proxy">305</a>  <a title="ErrorDocument 305" href="/e/305/">Use Proxy</a>  - <code>HTTP_USE_PROXY</code></li>
    <li> <a href="#status-306" title="unused">306</a>  <a title="ErrorDocument 306" href="/e/306/">unused</a>  - <code>UNUSED</code></li>
    <li> <a href="#status-307" title="Temporary Redirect">307</a>  <a title="ErrorDocument 307" href="/e/307/">Temporary Redirect</a>  - <code>HTTP_TEMPORARY_REDIRECT</code></li>
</ul>


<h3>4xx Client Error</h3>
<p><code>HTTP_CLIENT_ERROR</code> - <strong>The request contains bad syntax or cannot be fulfilled</strong>.  Indicates case where client seems to have erred. Except when responding to a HEAD request, the server should include an entity containing an explanation of the error situation, and whether it is a temporary or permanent condition.</p>
<ul>
    <li> <a href="#status-400" title="Bad Request">400</a>  <a title="ErrorDocument 400" href="/e/400/">Bad Request</a>  - <code>HTTP_BAD_REQUEST</code></li>
    <li> <a href="#status-401" title="Authorization Required">401</a>  <a title="ErrorDocument 401" href="/e/401/">Authorization Required</a>  - <code>HTTP_UNAUTHORIZED</code></li>
    <li> <a href="#status-402" title="Payment Required">402</a>  <a title="ErrorDocument 402" href="/e/402/">Payment Required</a>  - <code>HTTP_PAYMENT_REQUIRED</code></li>
    <li> <a href="#status-403" title="Forbidden">403</a>  <a title="ErrorDocument 403" href="/e/403/">Forbidden</a>  - <code>HTTP_FORBIDDEN</code></li>
    <li> <a href="#status-404" title="Not Found">404</a>  <a title="ErrorDocument 404" href="/e/404/">Not Found</a>  - <code>HTTP_NOT_FOUND</code></li>
    <li> <a href="#status-405" title="Method Not Allowed">405</a>  <a title="ErrorDocument 405" href="/e/405/">Method Not Allowed</a>  - <code>HTTP_METHOD_NOT_ALLOWED</code></li>
    <li> <a href="#status-406" title="Not Acceptable">406</a>  <a title="ErrorDocument 406" href="/e/406/">Not Acceptable</a>  - <code>HTTP_NOT_ACCEPTABLE</code></li>
    <li> <a href="#status-407" title="Proxy Authentication Required">407</a>  <a title="ErrorDocument 407" href="/e/407/">Proxy Authentication Required</a>  - <code>HTTP_PROXY_AUTHENTICATION_REQUIRED</code></li>
    <li> <a href="#status-408" title="Request Time-out">408</a>  <a title="ErrorDocument 408" href="/e/408/">Request Time-out</a>  - <code>HTTP_REQUEST_TIME_OUT</code></li>
    <li> <a href="#status-409" title="Conflict">409</a>  <a title="ErrorDocument 409" href="/e/409/">Conflict</a>  - <code>HTTP_CONFLICT</code></li>
    <li> <a href="#status-410" title="Gone">410</a>  <a title="ErrorDocument 410" href="/e/410/">Gone</a>  - <code>HTTP_GONE</code></li>
    <li> <a href="#status-411" title="Length Required">411</a>  <a title="ErrorDocument 411" href="/e/411/">Length Required</a>  - <code>HTTP_LENGTH_REQUIRED</code></li>
    <li> <a href="#status-412" title="Precondition Failed">412</a>  <a title="ErrorDocument 412" href="/e/412/">Precondition Failed</a>  - <code>HTTP_PRECONDITION_FAILED</code></li>
    <li> <a href="#status-413" title="Request Entity Too Large">413</a>  <a title="ErrorDocument 413" href="/e/413/">Request Entity Too Large</a>  - <code>HTTP_REQUEST_ENTITY_TOO_LARGE</code></li>
    <li> <a href="#status-414" title="Request-URI Too Large">414</a>  <a title="ErrorDocument 414" href="/e/414/">Request-URI Too Large</a>  - <code>HTTP_REQUEST_URI_TOO_LARGE</code></li>
    <li> <a href="#status-415" title="Unsupported Media Type">415</a>  <a title="ErrorDocument 415" href="/e/415/">Unsupported Media Type</a>  - <code>HTTP_UNSUPPORTED_MEDIA_TYPE</code></li>
    <li> <a href="#status-416" title="Requested Range Not Satisfiable">416</a>  <a title="ErrorDocument 416" href="/e/416/">Requested Range Not Satisfiable</a>  - <code>HTTP_RANGE_NOT_SATISFIABLE</code></li>
    <li> <a href="#status-417" title="Expectation Failed">417</a>  <a title="ErrorDocument 417" href="/e/417/">Expectation Failed</a>  - <code>HTTP_EXPECTATION_FAILED</code></li>
    <li> <a href="#status-418" title="Im a teapot">418</a>  <a title="ErrorDocument 418" href="/e/418/">I'm a teapot</a>  - <code>UNUSED</code></li>
    <li> <a href="#status-419" title="unused">419</a>  <a title="ErrorDocument 419" href="/e/419/">unused</a>  - <code>UNUSED</code></li>
    <li> <a href="#status-420" title="unused">420</a>  <a title="ErrorDocument 420" href="/e/420/">unused</a>  - <code>UNUSED</code></li>
    <li> <a href="#status-421" title="unused">421</a>  <a title="ErrorDocument 421" href="/e/421/">unused</a>  - <code>UNUSED</code></li>
    <li> <a href="#status-422" title="Unprocessable Entity">422</a>  <a title="ErrorDocument 422" href="/e/422/">Unprocessable Entity</a>  - <code>HTTP_UNPROCESSABLE_ENTITY</code></li>
    <li> <a href="#status-423" title="Locked">423</a>  <a title="ErrorDocument 423" href="/e/423/">Locked</a>  - <code>HTTP_LOCKED</code></li>
    <li> <a href="#status-424" title="Failed Dependency">424</a>  <a title="ErrorDocument 424" href="/e/424/">Failed Dependency</a>  - <code>HTTP_FAILED_DEPENDENCY</code></li>
    <li> <a href="#status-425" title="No code">425</a>  <a title="ErrorDocument 425" href="/e/425/">No code</a>  - <code>HTTP_NO_CODE</code></li>
    <li> <a href="#status-426" title="Upgrade Required">426</a>  <a title="ErrorDocument 426" href="/e/426/">Upgrade Required</a>  - <code>HTTP_UPGRADE_REQUIRED</code></li>
</ul>


<h3>5xx Server Error</h3>
<p><code>HTTP_SERVER_ERROR</code> - <strong>The server failed to fulfill an apparently valid request</strong>.  Indicate cases in which the server is aware that it has erred or is incapable of performing the request. Except when responding to a HEAD request, the server should include an entity containing an explanation of the error situation, and whether it is a temporary or permanent condition. User agents should display any included entity to the user. These response codes are applicable to any request method.</p>
<ul>
    <li> <a href="#status-500" title="Internal Server Error">500</a>  <a title="ErrorDocument 500" href="/e/500/">Internal Server Error</a>  - <code>HTTP_INTERNAL_SERVER_ERROR</code></li>
    <li> <a href="#status-501" title="Method Not Implemented">501</a>  <a title="ErrorDocument 501" href="/e/501/">Method Not Implemented</a>  - <code>HTTP_NOT_IMPLEMENTED</code></li>
    <li> <a href="#status-502" title="Bad Gateway">502</a>  <a title="ErrorDocument 502" href="/e/502/">Bad Gateway</a>  - <code>HTTP_BAD_GATEWAY</code></li>
    <li> <a href="#status-503" title="Service Temporarily Unavailable">503</a>  <a title="ErrorDocument 503" href="/e/503/">Service Temporarily Unavailable</a>  - <code>HTTP_SERVICE_UNAVAILABLE</code></li>
    <li> <a href="#status-504" title="Gateway Time-out">504</a>  <a title="ErrorDocument 504" href="/e/504/">Gateway Time-out</a>  - <code>HTTP_GATEWAY_TIME_OUT</code></li>
    <li> <a href="#status-505" title="HTTP Version Not Supported">505</a>  <a title="ErrorDocument 505" href="/e/505/">HTTP Version Not Supported</a>  - <code>HTTP_VERSION_NOT_SUPPORTED</code></li>
    <li> <a href="#status-506" title="Variant Also Negotiates">506</a>  <a title="ErrorDocument 506" href="/e/506/">Variant Also Negotiates</a>  - <code>HTTP_VARIANT_ALSO_VARIES</code></li>
    <li> <a href="#status-507" title="Insufficient Storage">507</a>  <a title="ErrorDocument 507" href="/e/507/">Insufficient Storage</a>  - <code>HTTP_INSUFFICIENT_STORAGE</code></li>
    <li> <a href="#status-508" title="unused">508</a>  <a title="ErrorDocument 508" href="/e/508/">unused</a>  - <code>UNUSED</code></li>
    <li> <a href="#status-509" title="unused">509</a>  <a title="ErrorDocument 509" href="/e/509/">unused</a>  - <code>UNUSED</code></li>
    <li> <a href="#status-510" title="Not Extended">510</a>  <a title="ErrorDocument 510" href="/e/510/">Not Extended</a>  - <code>HTTP_NOT_EXTENDED</code></li>
</ul>


<hr />


<h2> <a href="#quick-start" name="quick-start" id="quick-start">Quick Start to triggering ErrorDocuments for each Status Code</a> </h2>
<p>Let start with a quick and easy example.  Add the following Redirect rules to your htaccess file, then open your browser and goto each url like <code>yoursite.com/e/400</code>. <em>Don't create an /e/ directory or any files.</em></p>
<pre>Redirect 400 /e/400
Redirect 503 /e/503
Redirect 405 /e/405</pre>
<p> <a href="http://uploads.askapache.com/2007/03/error-400s.png" title="Apache ErrorDocument Results" rel="lb"><img src="http://uploads.askapache.com/2007/03/error-400s.thumbnail.png" alt="Apache ErrorDocument Results" title="error 400s.thumbnail htaccess" /></a> <br /> <a href="http://uploads.askapache.com/2007/03/error-503.png" title="error 503" rel="lb"><img src="http://uploads.askapache.com/2007/03/error-503.thumbnail.png" alt="error 503" title="error 503.thumbnail htaccess" /></a> </p>


<h2> <a href="#automating-the-process" name="automating-the-process" id="automating-the-process">Automate the ErrorDocument Triggering</a> </h2>


<h3> <a href="#redirect-code-in-htaccess" name="redirect-code-in-htaccess" id="redirect-code-in-htaccess">The htaccess Redirects</a> </h3>
<p>When a Status code is encountered, Apache outputs the Header and the ErrorDocument for that error code.  So you can view any Header and the default ErrorDocument, by causing that numerical error code, which is caused by the Status Code.</p>
<p>For instance, if you request a file that doesn't exist, a <strong>404 Not Found</strong> Header is issued and the corresponding ErrorDocument is served with the <strong>404 Not Found</strong> Header.</p>
<pre>Redirect 100 /e/100
Redirect 101 /e/101
Redirect 102 /e/102
Redirect 200 /e/200
Redirect 201 /e/201
Redirect 202 /e/202
Redirect 203 /e/203
Redirect 204 /e/204
Redirect 205 /e/205
Redirect 206 /e/206
Redirect 207 /e/207
Redirect 300 /e/300 http://www.askapache.com/?s=300
Redirect 301 /e/301 http://www.askapache.com/?s=301
Redirect 302 /e/302 http://www.askapache.com/?s=302
Redirect 303 /e/303 http://www.askapache.com/?s=303
Redirect 304 /e/304 http://www.askapache.com/?s=304
Redirect 305 /e/305 http://www.askapache.com/?s=305
Redirect 306 /e/306 http://www.askapache.com/?s=306
Redirect 307 /e/307 http://www.askapache.com/?s=307
Redirect 400 /e/400
Redirect 401 /e/401
Redirect 402 /e/402
Redirect 403 /e/403
Redirect 404 /e/404
Redirect 405 /e/405
Redirect 406 /e/406
Redirect 407 /e/407
Redirect 408 /e/408
Redirect 409 /e/409
Redirect 410 /e/410
Redirect 411 /e/411
Redirect 412 /e/412
Redirect 413 /e/413
Redirect 414 /e/414
Redirect 415 /e/415
Redirect 416 /e/416
Redirect 417 /e/417
Redirect 418 /e/418
Redirect 419 /e/419
Redirect 420 /e/420
Redirect 421 /e/421
Redirect 422 /e/422
Redirect 423 /e/423
Redirect 424 /e/424
Redirect 425 /e/425
Redirect 426 /e/426
Redirect 500 /e/500
Redirect 501 /e/501
Redirect 502 /e/502
Redirect 503 /e/503
Redirect 504 /e/504
Redirect 505 /e/505
Redirect 506 /e/506
Redirect 507 /e/507
Redirect 508 /e/508
Redirect 509 /e/509
Redirect 510 /e/510</pre>


<h3> <a href="#php-header-grabber-script" name="php-header-grabber-script" id="php-header-grabber-script">PHP script that gets and outputs the Headers/Content</a> </h3>
<p>Now all I have to do is add 57 Redirect Directives to my htaccess, and then request each of them 1 at a time from my browser to see the result, and use a packet sniffing program like  <a href="http://wireshark.askapache.com">WireShark</a>  to see the Headers.  Uh, scratch that, that would take way too long!</p>
<p>Instead I hacked up a simple php script using  <a href="http://www.askapache.com/phpbb/sending-post-form-data-with-php-curl.html">cURL</a>  to automate sending GET Requests to each of the 57 Redirect URL-paths. A side benefit of using the php script is that it performs all 57 Requests concurrently and saves each Requests returned headers and content to an output buffer.  After all 57 have been queried, the output buffer is flushed to the browser.</p>
<pre>&lt;?php
$SITENAME=&#039;http://www.askapache.com&#039;;
&nbsp;
$CODES = array(array(&#039;100&#039;,&#039;101&#039;,&#039;102&#039;),
array(&#039;200&#039;,&#039;201&#039;,&#039;202&#039;,&#039;203&#039;,&#039;204&#039;,&#039;205&#039;,&#039;206&#039;,&#039;207&#039;),
array(&#039;300&#039;,&#039;301&#039;,&#039;302&#039;,&#039;303&#039;,&#039;304&#039;,&#039;305&#039;,&#039;306&#039;,&#039;307&#039;),
array(&#039;400&#039;,&#039;401&#039;,&#039;402&#039;,&#039;403&#039;,&#039;404&#039;,&#039;405&#039;,&#039;406&#039;,&#039;407&#039;,&#039;408&#039;,&#039;409&#039;,&#039;410&#039;,&#039;411&#039;,&#039;412&#039;,&#039;413&#039;,
&#039;414&#039;,&#039;415&#039;,&#039;416&#039;,&#039;417&#039;,&#039;418&#039;,&#039;419&#039;,&#039;420&#039;,&#039;421&#039;,&#039;422&#039;,&#039;423&#039;,&#039;424&#039;,&#039;425&#039;,&#039;426&#039;),
array(&#039;500&#039;,&#039;501&#039;,&#039;502&#039;,&#039;503&#039;,&#039;504&#039;,&#039;505&#039;,&#039;506&#039;,&#039;507&#039;,&#039;508&#039;,&#039;509&#039;,&#039;510&#039;));
&nbsp;
$TMPSAVETO=&#039;/tmp/&#039;.time().&#039;.txt&#039;;
&nbsp;
# if file exists then delete it
if(is_file($TMPSAVETO))unlink($TMPSAVETO);
&nbsp;
foreach($CODES as $keyd =&gt; $res)
{
foreach($res as $key)
{
$ch = curl_init("$SITENAME/e/$key");
$fp = fopen ($TMPSAVETO, "a");
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt ($ch, CURLOPT_HEADER ,1);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
}
}
$OUT=&#039;&#039;;
ob_start();
header ("Content-Type: text/plain;");
readfile($TMPSAVETO);
$OUT=ob_get_clean();
echo $OUT;
unlink($TMPSAVETO);
exit;
?&gt;</pre>


<h2> <a href="#headers-returned-content" id="headers-returned-content">Headers and Content Returned</a> </h2>


<h3> <a href="#status-100" name="status-100" id="status-100">100 Continue</a> </h3>
<pre>HTTP/1.1 100 Continue
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;100 Continue&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Continue&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-101" name="status-101" id="status-101">101 Switching Protocols</a> </h3>
<pre>HTTP/1.1 101 Switching Protocols&lt;html&gt;
&lt;head&gt;
&lt;title&gt;101 Switching Protocols&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Switching Protocols&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-102" name="status-102" id="status-102">102 Processing</a> </h3>
<pre>HTTP/1.1 102 Processing
X-Pad: avoid browser bug&lt;html&gt;
&lt;head&gt;
&lt;title&gt;102 Processing&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Processing&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-200" name="status-200" id="status-200">200 OK</a> </h3>
<pre>HTTP/1.1 200 OK
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;200 OK&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;OK&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-201" name="status-201" id="status-201">201 Created</a> </h3>
<pre>HTTP/1.1 201 Created
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;201 Created&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Created&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-202" name="status-202" id="status-202">202 Accepted</a> </h3>
<pre>HTTP/1.1 202 Accepted
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;202 Accepted&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Accepted&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-203" name="status-203" id="status-203">203 Non-Authoritative Information</a> </h3>
<pre>HTTP/1.1 203 Non-Authoritative Information
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;203 Non-Authoritative Information&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Non-Authoritative Information&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-204" name="status-204" id="status-204">204 No Content</a> </h3>
<pre>HTTP/1.1 204 No Content
Content-Type: text/plain; charset=UTF-8
</pre>


<h3> <a href="#status-205" name="status-205" id="status-205">205 Reset Content</a> </h3>
<pre>HTTP/1.1 205 Reset Content&lt;html&gt;
&lt;head&gt;
&lt;title&gt;205 Reset Content&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Reset Content&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-206" name="status-206" id="status-206">206 Partial Content</a> </h3>
<pre>HTTP/1.1 206 Partial Content&lt;html&gt;
&lt;head&gt;
&lt;title&gt;206 Partial Content&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Partial Content&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-207" name="status-207" id="status-207">207 Multi-Status</a> </h3>
<pre>HTTP/1.1 207 Multi-Status
X-Pad: avoid browser bug&lt;html&gt;
&lt;head&gt;
&lt;title&gt;207 Multi-Status&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Multi-Status&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-300" name="status-300" id="status-300">300 Multiple Choices</a> </h3>
<pre>HTTP/1.1 300 Multiple Choices
Location: http://www.askapache.com/?s=300&lt;html&gt;
&lt;head&gt;
&lt;title&gt;300 Multiple Choices&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Multiple Choices&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-301" name="status-301" id="status-301">301 Moved Permanently</a> </h3>
<pre>HTTP/1.1 301 Moved Permanently
Location: http://www.askapache.com/?s=301&lt;html&gt;
&lt;head&gt;
&lt;title&gt;301 Moved Permanently&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Moved Permanently&lt;/h1&gt;
&lt;p&gt;The document has moved  &lt;a href="http://www.askapache.com/?s=301"&gt;here&lt;/a&gt; .&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-302" name="status-302" id="status-302">302 Found</a> </h3>
<pre>HTTP/1.1 302 Found
Location: http://www.askapache.com/?s=302&lt;html&gt;
&lt;head&gt;
&lt;title&gt;302 Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Found&lt;/h1&gt;
&lt;p&gt;The document has moved  &lt;a href="http://www.askapache.com/?s=302"&gt;here&lt;/a&gt; .&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-303" name="status-303" id="status-303">303 See Other</a> </h3>
<pre>HTTP/1.1 303 See Other
Location: http://www.askapache.com/?s=303&lt;html&gt;
&lt;head&gt;
&lt;title&gt;303 See Other&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;See Other&lt;/h1&gt;
&lt;p&gt;The answer to your request is located  &lt;a href="http://www.askapache.com/?s=303"&gt;here&lt;/a&gt; .&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-304" name="status-304" id="status-304">304 Not Modified</a> </h3>
<pre>HTTP/1.1 304 Not Modified</pre>


<h3> <a href="#status-305" name="status-305" id="status-305">305 Use Proxy</a> </h3>
<pre>HTTP/1.1 305 Use Proxy
Location: http://www.askapache.com/?s=305&lt;html&gt;
&lt;head&gt;
&lt;title&gt;305 Use Proxy&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Use Proxy&lt;/h1&gt;
&lt;p&gt;This resource is only accessible through the proxy
    http://www.askapache.com/?s=305&lt;br /&gt;You will need to configure your client to use that proxy.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-306" name="status-306" id="status-306">306 unused</a> </h3>
<pre>HTTP/1.1 306 unused
Location: http://www.askapache.com/?s=306&lt;html&gt;
&lt;head&gt;
&lt;title&gt;306 unused&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;unused&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-307" name="status-307" id="status-307">307 Temporary Redirect</a> </h3>
<pre>HTTP/1.1 307 Temporary Redirect
Location: http://www.askapache.com/?s=307&lt;html&gt;
&lt;head&gt;
&lt;title&gt;307 Temporary Redirect&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Temporary Redirect&lt;/h1&gt;
&lt;p&gt;The document has moved  &lt;a href="http://www.askapache.com/?s=307"&gt;here&lt;/a&gt; .&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-400" name="status-400" id="status-400">400 Bad Request</a> </h3>
<pre>HTTP/1.1 400 Bad Request
Connection: close&lt;html&gt;
&lt;head&gt;
&lt;title&gt;400 Bad Request&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Bad Request&lt;/h1&gt;
&lt;p&gt;Your browser sent a request that this server could not understand.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-401" name="status-401" id="status-401">401 Authorization Required</a> </h3>
<pre>HTTP/1.1 401 Authorization Required&lt;html&gt;
&lt;head&gt;
&lt;title&gt;401 Authorization Required&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Authorization Required&lt;/h1&gt;
&lt;p&gt;This server could not verify that you
    are authorized to access the document
    requested.  Either you supplied the wrong
    credentials (e.g., bad password), or your
    browser doesn&#039;t understand how to supply
    the credentials required.&lt;/p&gt;
&lt;p&gt;Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-402" name="status-402" id="status-402">402 Payment Required</a> </h3>
<pre>HTTP/1.1 402 Payment Required&lt;html&gt;
&lt;head&gt;
&lt;title&gt;402 Payment Required&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Payment Required&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-403" name="status-403" id="status-403">403 Forbidden</a> </h3>
<pre>HTTP/1.1 403 Forbidden&lt;html&gt;
&lt;head&gt;
&lt;title&gt;403 Forbidden&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Forbidden&lt;/h1&gt;
&lt;p&gt;You don&#039;t have permission to access /e/403
    on this server.&lt;/p&gt;
&lt;p&gt;Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-404" name="status-404" id="status-404">404 Not Found</a> </h3>
<pre>HTTP/1.1 404 Not Found&lt;html&gt;
&lt;head&gt;
&lt;title&gt;404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Not Found&lt;/h1&gt;
&lt;p&gt;The requested URL /e/404 was not found on this server.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p class="anote"><span>NOTE:</span><br />You will most definately want to check out and use the <a href="http://www.askapache.com/seo/404-google-wordpress-plugin.html" title="404 Error Page WordPress Plugin">Google 404 Error Page</a> if you run WordPress.</p>


<h3> <a href="#status-405" name="status-405" id="status-405">405 Method Not Allowed</a> </h3>
<pre>HTTP/1.1 405 Method Not Allowed
Allow: TRACE
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;405 Method Not Allowed&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Method Not Allowed&lt;/h1&gt;
&lt;p&gt;The requested method GET is not allowed for the URL /e/405.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-406" name="status-406" id="status-406">406 Not Acceptable</a> </h3>
<pre>HTTP/1.1 406 Not Acceptable
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;406 Not Acceptable&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Not Acceptable&lt;/h1&gt;
&lt;p&gt;An appropriate representation of the requested resource /e/406 could not be found on this server.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-407" name="status-407" id="status-407">407 Proxy Authentication Required</a> </h3>
<pre>HTTP/1.1 407 Proxy Authentication Required&lt;html&gt;
&lt;head&gt;
&lt;title&gt;407 Proxy Authentication Required&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Proxy Authentication Required&lt;/h1&gt;
&lt;p&gt;This server could not verify that you
    are authorized to access the document
    requested.  Either you supplied the wrong
    credentials (e.g., bad password), or your
    browser doesn&#039;t understand how to supply
    the credentials required.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-408" name="status-408" id="status-408">408 Request Time-out</a> </h3>
<pre>HTTP/1.1 408 Request Time-out
Connection: close
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;408 Request Time-out&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Request Time-out&lt;/h1&gt;
&lt;p&gt;Server timeout waiting for the HTTP request from the client.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-409" name="status-409" id="status-409">409 Conflict</a> </h3>
<pre>HTTP/1.1 409 Conflict
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;409 Conflict&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Conflict&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-410" name="status-410" id="status-410">410 Gone</a> </h3>
<pre>HTTP/1.1 410 Gone
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;410 Gone&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Gone&lt;/h1&gt;
&lt;p&gt;The requested resource&lt;br /&gt;/e/410&lt;br /&gt;is no longer available on this server and there is no forwarding address.
    Please remove all references to this resource.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-411" name="status-411" id="status-411">411 Length Required</a> </h3>
<pre>HTTP/1.1 411 Length Required
Connection: close
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;411 Length Required&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Length Required&lt;/h1&gt;
&lt;p&gt;A request of the requested method GET requires a valid Content-length.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-412" name="status-412" id="status-412">412 Precondition Failed</a> </h3>
<pre>HTTP/1.1 412 Precondition Failed
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;412 Precondition Failed&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Precondition Failed&lt;/h1&gt;
&lt;p&gt;The precondition on the request for the URL /e/412 evaluated to false.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-413" name="status-413" id="status-413">413 Request Entity Too Large</a> </h3>
<pre>HTTP/1.1 413 Request Entity Too Large
Connection: close&lt;html&gt;
&lt;head&gt;
&lt;title&gt;413 Request Entity Too Large&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Request Entity Too Large&lt;/h1&gt;
The requested resource&lt;br /&gt;/e/413&lt;br /&gt;does not allow request data with GET requests, or the amount of data provided in
the request exceeds the capacity limit.
&lt;/body&gt;
&lt;/html&gt;</pre>

<h3> <a href="#status-414" name="status-414" id="status-414">414 Request-URI Too Large</a> </h3>
<pre>HTTP/1.1 414 Request-URI Too Large
Connection: close&lt;html&gt;
&lt;head&gt;
&lt;title&gt;414 Request-URI Too Large&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Request-URI Too Large&lt;/h1&gt;
&lt;p&gt;The requested URL&#039;s length exceeds the capacity
    limit for this server.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-415" name="status-415" id="status-415">415 Unsupported Media Type</a> </h3>
<pre>HTTP/1.1 415 Unsupported Media Type&lt;html&gt;
&lt;head&gt;
&lt;title&gt;415 Unsupported Media Type&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Unsupported Media Type&lt;/h1&gt;
&lt;p&gt;The supplied request data is not in a format
    acceptable for processing by this resource.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-416" name="status-416" id="status-416">416 Requested Range Not Satisfiable</a> </h3>
<pre>HTTP/1.1 416 Requested Range Not Satisfiable</pre>


<h3> <a href="#status-417" name="status-417" id="status-417">417 Expectation Failed</a> </h3>
<pre>HTTP/1.1 417 Expectation Failed&lt;html&gt;
&lt;head&gt;
&lt;title&gt;417 Expectation Failed&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Expectation Failed&lt;/h1&gt;
&lt;p&gt;The expectation given in the Expect request-header
    field could not be met by this server.&lt;/p&gt;
&lt;p&gt;The client sent&lt;pre&gt;
    Expect: &lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-418" name="status-418" id="status-418">418 I'm a teapot</a> </h3>
<pre>HTTP/1.1 418 I&#039;m a teapot&lt;html&gt;
&lt;head&gt;
&lt;title&gt;418 I&#039;m a teapot&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;I&#039;m a teapot&lt;/h1&gt;
&lt;p&gt;Unfortunately this coffee machine is out of coffee.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-419" name="status-419" id="status-419">419 unused</a> </h3>
<pre>HTTP/1.1 419 unused&lt;html&gt;
&lt;head&gt;
&lt;title&gt;419 unused&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;unused&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-420" name="status-420" id="status-420">420 unused</a> </h3>
<pre>HTTP/1.1 420 unused&lt;html&gt;
&lt;head&gt;
&lt;title&gt;420 unused&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;unused&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-421" name="status-421" id="status-421">421 unused</a> </h3>
<pre>HTTP/1.1 421 unused&lt;html&gt;
&lt;head&gt;
&lt;title&gt;421 unused&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;unused&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-422" name="status-422" id="status-422">422 Unprocessable Entity</a> </h3>
<pre>HTTP/1.1 422 Unprocessable Entity&lt;html&gt;
&lt;head&gt;
&lt;title&gt;422 Unprocessable Entity&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Unprocessable Entity&lt;/h1&gt;
&lt;p&gt;The server understands the media type of the
    request entity, but was unable to process the
    contained instructions.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-423" name="status-423" id="status-423">423 Locked</a> </h3>
<pre>HTTP/1.1 423 Locked&lt;html&gt;
&lt;head&gt;
&lt;title&gt;423 Locked&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Locked&lt;/h1&gt;
&lt;p&gt;The requested resource is currently locked.
    The lock must be released or proper identification
    given before the method can be applied.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-424" name="status-424" id="status-424">424 Failed Dependency</a> </h3>
<pre>HTTP/1.1 424 Failed Dependency&lt;html&gt;
&lt;head&gt;
&lt;title&gt;424 Failed Dependency&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Failed Dependency&lt;/h1&gt;
&lt;p&gt;The method could not be performed on the resource
    because the requested action depended on another
    action and that other action failed.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-425" name="status-425" id="status-425">425 No code</a> </h3>
<pre>HTTP/1.1 425 No code&lt;html&gt;
&lt;head&gt;
&lt;title&gt;425 No code&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;No code&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-426" name="status-426" id="status-426">426 Upgrade Required</a> </h3>
<pre>HTTP/1.1 426 Upgrade Required&lt;html&gt;
&lt;head&gt;
&lt;title&gt;426 Upgrade Required&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Upgrade Required&lt;/h1&gt;
&lt;p&gt;The requested resource can only be retrieved
    using SSL.  The server is willing to upgrade the current
    connection to SSL, but your client doesn&#039;t support it.
    Either upgrade your client, or try requesting the page
    using https:// &lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-500" name="status-500" id="status-500">500 Internal Server Error</a> </h3>
<pre>HTTP/1.1 500 Internal Server Error
Connection: close&lt;html&gt;
&lt;head&gt;
&lt;title&gt;500 Internal Server Error&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Internal Server Error&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;p&gt;Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-501" name="status-501" id="status-501">501 Method Not Implemented</a> </h3>
<pre>HTTP/1.1 501 Method Not Implemented
Allow: TRACE
Connection: close&lt;html&gt;
&lt;head&gt;
&lt;title&gt;501 Method Not Implemented&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Method Not Implemented&lt;/h1&gt;
&lt;p&gt;GET to /e/501 not supported.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-502" name="status-502" id="status-502">502 Bad Gateway</a> </h3>
<pre>HTTP/1.1 502 Bad Gateway
X-Pad: avoid browser bug&lt;html&gt;
&lt;head&gt;
&lt;title&gt;502 Bad Gateway&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Bad Gateway&lt;/h1&gt;
&lt;p&gt;The proxy server received an invalid
    response from an upstream server.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-503" name="status-503" id="status-503">503 Service Temporarily Unavailable</a> </h3>
<pre>HTTP/1.1 503 Service Temporarily Unavailable
Connection: close&lt;html&gt;
&lt;head&gt;
&lt;title&gt;503 Service Temporarily Unavailable&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Service Temporarily Unavailable&lt;/h1&gt;
&lt;p&gt;The server is temporarily unable to service your
    request due to maintenance downtime or capacity
    problems. Please try again later.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-504" name="status-504" id="status-504">504 Gateway Time-out</a> </h3>
<pre>HTTP/1.1 504 Gateway Time-out&lt;html&gt;
&lt;head&gt;
&lt;title&gt;504 Gateway Time-out&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Gateway Time-out&lt;/h1&gt;
&lt;p&gt;The proxy server did not receive a timely response
    from the upstream server.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-505" name="status-505" id="status-505">505 HTTP Version Not Supported</a> </h3>
<pre>HTTP/1.1 505 HTTP Version Not Supported&lt;html&gt;
&lt;head&gt;
&lt;title&gt;505 HTTP Version Not Supported&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;HTTP Version Not Supported&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-506" name="status-506" id="status-506">506 Variant Also Negotiates</a> </h3>
<pre>HTTP/1.1 506 Variant Also Negotiates&lt;html&gt;
&lt;head&gt;
&lt;title&gt;506 Variant Also Negotiates&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Variant Also Negotiates&lt;/h1&gt;
&lt;p&gt;A variant for the requested resource
    &lt;pre&gt;
    /e/506
    &lt;/pre&gt;
    is itself a negotiable resource. This indicates a configuration error.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-507" name="status-507" id="status-507">507 Insufficient Storage</a> </h3>
<pre>HTTP/1.1 507 Insufficient Storage&lt;html&gt;
&lt;head&gt;
&lt;title&gt;507 Insufficient Storage&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Insufficient Storage&lt;/h1&gt;
&lt;p&gt;The method could not be performed on the resource
    because the server is unable to store the
    representation needed to successfully complete the
    request.  There is insufficient free space left in
    your storage allocation.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-508" name="status-508" id="status-508">508 unused</a> </h3>
<pre>HTTP/1.1 508 unused&lt;html&gt;
&lt;head&gt;
&lt;title&gt;508 unused&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;unused&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-509" name="status-509" id="status-509">509 unused</a> </h3>
<pre>HTTP/1.1 509 unused
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;509 unused&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;unused&lt;/h1&gt;
&lt;p&gt;The server encountered an internal error or misconfigurationand was unable to complete your request.&lt;/p&gt;
&lt;p&gt;Please contact the server administrator, a@s.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.&lt;/p&gt;
&lt;p&gt;More information about this error may be available in the server error log.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h3> <a href="#status-510" name="status-510" id="status-510">510 Not Extended</a> </h3>
<pre>HTTP/1.1 510 Not Extended
X-Pad: avoid browser bug
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;510 Not Extended&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Not Extended&lt;/h1&gt;
&lt;p&gt;A mandatory extension policy in the request is not
    accepted by the server for this resource.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>


<h2> <a href="#apache-source-code" name="apache-source-code" id="apache-source-code">Apache Source Code</a> </h2>


<h3> <a href="#httpdh-h" name="httpdh-h" id="httpdh-h">httpd.h</a> </h3>
<p>From <a href="http://uploads.askapache.com/2007/02/httpd.h" title="httpd.h Apache">httpd.h</a> </p>
<pre>/**
* The size of the static array in http_protocol.c for storing
* all of the potential response status-lines (a sparse table).
* A future version should dynamically generate the apr_table_t at startup.
*/
#define RESPONSE_CODES 57
#define HTTP_CONTINUE            100
#define HTTP_SWITCHING_PROTOCOLS       101
#define HTTP_PROCESSING          102
#define HTTP_OK              200
#define HTTP_CREATED             201
#define HTTP_ACCEPTED            202
#define HTTP_NON_AUTHORITATIVE       203
#define HTTP_NO_CONTENT          204
#define HTTP_RESET_CONTENT         205
#define HTTP_PARTIAL_CONTENT         206
#define HTTP_MULTI_STATUS          207
#define HTTP_MULTIPLE_CHOICES        300
#define HTTP_MOVED_PERMANENTLY       301
&nbsp;
#define HTTP_MOVED_TEMPORARILY       302
#define HTTP_SEE_OTHER           303
#define HTTP_NOT_MODIFIED          304
#define HTTP_USE_PROXY           305
#define HTTP_TEMPORARY_REDIRECT      307
#define HTTP_BAD_REQUEST           400
#define HTTP_UNAUTHORIZED          401
#define HTTP_PAYMENT_REQUIRED        402
#define HTTP_FORBIDDEN           403
#define HTTP_NOT_FOUND           404
#define HTTP_METHOD_NOT_ALLOWED      405
#define HTTP_NOT_ACCEPTABLE        406
#define HTTP_PROXY_AUTHENTICATION_REQUIRED 407
#define HTTP_REQUEST_TIME_OUT        408
#define HTTP_CONFLICT            409
#define HTTP_GONE              410
#define HTTP_LENGTH_REQUIRED         411
#define HTTP_PRECONDITION_FAILED       412
#define HTTP_REQUEST_ENTITY_TOO_LARGE    413
#define HTTP_REQUEST_URI_TOO_LARGE     414
#define HTTP_UNSUPPORTED_MEDIA_TYPE    415
#define HTTP_RANGE_NOT_SATISFIABLE     416
#define HTTP_EXPECTATION_FAILED      417
#define HTTP_UNPROCESSABLE_ENTITY      422
#define HTTP_LOCKED            423
#define HTTP_FAILED_DEPENDENCY       424
#define HTTP_UPGRADE_REQUIRED        426
#define HTTP_INTERNAL_SERVER_ERROR     500
#define HTTP_NOT_IMPLEMENTED         501
#define HTTP_BAD_GATEWAY           502
#define HTTP_SERVICE_UNAVAILABLE       503
#define HTTP_GATEWAY_TIME_OUT        504
#define HTTP_VERSION_NOT_SUPPORTED     505
#define HTTP_VARIANT_ALSO_VARIES       506
#define HTTP_INSUFFICIENT_STORAGE      507
#define HTTP_NOT_EXTENDED          510
&nbsp;
/** is the status code informational */
#define ap_is_HTTP_INFO(x)     (((x) &gt;= 100)&amp;&amp;((x) &lt; 200))
/** is the status code OK ?*/
#define ap_is_HTTP_SUCCESS(x)    (((x) &gt;= 200)&amp;&amp;((x) &lt; 300))
/** is the status code a redirect */
#define ap_is_HTTP_REDIRECT(x)   (((x) &gt;= 300)&amp;&amp;((x) &lt; 400))
/** is the status code a error (client or server) */
#define ap_is_HTTP_ERROR(x)    (((x) &gt;= 400)&amp;&amp;((x) &lt; 600))
/** is the status code a client error  */
#define ap_is_HTTP_CLIENT_ERROR(x) (((x) &gt;= 400)&amp;&amp;((x) &lt; 500))
/** is the status code a server error  */
#define ap_is_HTTP_SERVER_ERROR(x) (((x) &gt;= 500)&amp;&amp;((x) &lt; 600))
/** is the status code a (potentially) valid response code?  */
#define ap_is_HTTP_VALID_RESPONSE(x) (((x) &gt;= 100)&amp;&amp;((x) &lt; 600))
&nbsp;
/** should the status code drop the connection */
#define ap_status_drops_connection(x) \
(((x) == HTTP_BAD_REQUEST)       || \
((x) == HTTP_REQUEST_TIME_OUT)    || \
((x) == HTTP_LENGTH_REQUIRED)     || \
((x) == HTTP_REQUEST_ENTITY_TOO_LARGE) || \
((x) == HTTP_REQUEST_URI_TOO_LARGE) || \
((x) == HTTP_INTERNAL_SERVER_ERROR) || \
((x) == HTTP_SERVICE_UNAVAILABLE) || \
((x) == HTTP_NOT_IMPLEMENTED))</pre>


<h4>HTTP_INFO</h4>
<p><strong>Is the status code (x) informational?</strong></p>
<pre>x &gt;= 100 &amp;&amp; x &lt; 200</pre>


<h4>HTTP_SUCCESS</h4>
<p><strong>Is the status code (x) OK?</strong></p>
<pre>x &gt;= 200 &amp;&amp; x &lt; 300</pre>


<h4>HTTP_REDIRECT</h4>
<p><strong>Is the status code (x) a redirect?</strong></p>
<pre>x &gt;= 300 &amp;&amp; x &lt; 400</pre>


<h4>HTTP_ERROR</h4>
<p><strong>Is the status code (x) a error (client or server)?</strong></p>
<pre>x &gt;= 400 &amp;&amp; x &lt; 600</pre>


<h4>HTTP_CLIENT_ERROR</h4>
<p><strong>Is the status code (x) a client error?</strong></p>
<pre>x &gt;= 400 &amp;&amp; x &lt; 500</pre>


<h4>HTTP_SERVER_ERROR</h4>
<p><strong>Is the status code (x) a server error?</strong></p>
<pre>x &gt;= 500 &amp;&amp; x &lt; 600</pre>


<h4>HTTP_VALID_RESPONSE</h4>
<p><strong>Is the status code (x) a (potentially) valid response code?</strong></p>
<pre>x &gt;= 100 &amp;&amp; x &lt; 600</pre>


<h3> <a href="#http_protocol-c" name="http_protocol-c" id="http_protocol-c">http_protocol.c</a> </h3>
<p>From <a href="http://uploads.askapache.com/2007/02/http_protocol.c" title="http_protocol.c">http_protocol.c</a> </p>
<pre>static const char * status_lines[RESPONSE_CODES] =
static const char * const status_lines[RESPONSE_CODES] =
"100 Continue",
"101 Switching Protocols",
"102 Processing",
"200 OK",
"201 Created",
"202 Accepted",
"203 Non-Authoritative Information",
"204 No Content",
"205 Reset Content",
"206 Partial Content",
"207 Multi-Status",
"300 Multiple Choices",
"301 Moved Permanently",
"302 Found",
"303 See Other",
"304 Not Modified",
"305 Use Proxy",
"306 unused",
"307 Temporary Redirect",
"400 Bad Request",
"401 Authorization Required",
"402 Payment Required",
"403 Forbidden",
"404 Not Found",
"405 Method Not Allowed",
"406 Not Acceptable",
"407 Proxy Authentication Required",
"408 Request Time-out",
"409 Conflict",
"410 Gone",
"411 Length Required",
"412 Precondition Failed",
"413 Request Entity Too Large",
"414 Request-URI Too Large",
"415 Unsupported Media Type",
"416 Requested Range Not Satisfiable",
"417 Expectation Failed",
"418 unused",
"419 unused",
"420 unused",
"421 unused",
"422 Unprocessable Entity",
"423 Locked",
"424 Failed Dependency",
"425 No code",
"426 Upgrade Required",
"500 Internal Server Error",
"501 Method Not Implemented",
"502 Bad Gateway",
"503 Service Temporarily Unavailable",
"504 Gateway Time-out",
"505 HTTP Version Not Supported",
"506 Variant Also Negotiates",
"507 Insufficient Storage",
"508 unused",
"509 unused",
"510 Not Extended"</pre>


<h2>IANA HTTP Status Code Registry</h2>
<table cellpadding="3" cellspacing="0">
    <thead>
        <tr>
            <th>Value</th>
            <th>Description</th>
            <th>Reference</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>100</td>
            <td>Continue</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.1.1">Section 10.1.1</a> </td>
        </tr>
        <tr>
            <td>101</td>
            <td>Switching Protocols</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.1.2">Section 10.1.2</a> </td>
        </tr>
        <tr>
            <td>102</td>
            <td>Processing</td>
            <td> <a href="#RFC2518"><cite title="HTTP Extensions for Distributed Authoring -- WEBDAV">[RFC2518]</cite></a> , <a href="http://rfc.askapache.com/rfc2518#section-10.1">Section 10.1</a> </td>
        </tr>
        <tr>
            <td>200</td>
            <td>OK</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.2.1">Section 10.2.1</a> </td>
        </tr>
        <tr>
            <td>201</td>
            <td>Created</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.2.2">Section 10.2.2</a> </td>
        </tr>
        <tr>
            <td>202</td>
            <td>Accepted</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.2.3">Section 10.2.3</a> </td>
        </tr>
        <tr>
            <td>203</td>
            <td>Non-Authoritative Information</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.2.4">Section 10.2.4</a> </td>
        </tr>
        <tr>
            <td>204</td>
            <td>No Content</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.2.5">Section 10.2.5</a> </td>
        </tr>
        <tr>
            <td>205</td>
            <td>Reset Content</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.2.6">Section 10.2.6</a> </td>
        </tr>
        <tr>
            <td>206</td>
            <td>Partial Content</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.2.7">Section 10.2.7</a> </td>
        </tr>
        <tr>
            <td>207</td>
            <td>Multi-Status</td>
            <td> <a href="#RFC4918"><cite title="HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)">[RFC4918]</cite></a> , <a href="http://rfc.askapache.com/rfc4918#section-11.1">Section 11.1</a> </td>
        </tr>
        <tr>
            <td>226</td>
            <td>IM Used</td>
            <td> <a href="#RFC3229"><cite title="Delta encoding in HTTP">[RFC3229]</cite></a> , <a href="http://rfc.askapache.com/rfc3229#section-10.4.1">Section 10.4.1</a> </td>
        </tr>
        <tr>
            <td>300</td>
            <td>Multiple Choices</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.3.1">Section 10.3.1</a> </td>
        </tr>
        <tr>
            <td>301</td>
            <td>Moved Permanently</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.3.2">Section 10.3.2</a> </td>
        </tr>
        <tr>
            <td>302</td>
            <td>Found</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.3.3">Section 10.3.3</a> </td>
        </tr>
        <tr>
            <td>303</td>
            <td>See Other</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.3.4">Section 10.3.4</a> </td>
        </tr>
        <tr>
            <td>304</td>
            <td>Not Modified</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.3.5">Section 10.3.5</a> </td>
        </tr>
        <tr>
            <td>305</td>
            <td>Use Proxy</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.3.6">Section 10.3.6</a> </td>
        </tr>
        <tr>
            <td>306</td>
            <td>(Reserved)</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.3.7">Section 10.3.7</a> </td>
        </tr>
        <tr>
            <td>307</td>
            <td>Temporary Redirect</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.3.8">Section 10.3.8</a> </td>
        </tr>
        <tr>
            <td>400</td>
            <td>Bad Request</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.1">Section 10.4.1</a> </td>
        </tr>
        <tr>
            <td>401</td>
            <td>Unauthorized</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.2">Section 10.4.2</a> </td>
        </tr>
        <tr>
            <td>402</td>
            <td>Payment Required</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.3">Section 10.4.3</a> </td>
        </tr>
        <tr>
            <td>403</td>
            <td>Forbidden</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.4">Section 10.4.4</a> </td>
        </tr>
        <tr>
            <td>404</td>
            <td>Not Found</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.5">Section 10.4.5</a> </td>
        </tr>
        <tr>
            <td>405</td>
            <td>Method Not Allowed</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.6">Section 10.4.6</a> </td>
        </tr>
        <tr>
            <td>406</td>
            <td>Not Acceptable</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.7">Section 10.4.7</a> </td>
        </tr>
        <tr>
            <td>407</td>
            <td>Proxy Authentication Required</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.8">Section 10.4.8</a> </td>
        </tr>
        <tr>
            <td>408</td>
            <td>Request Timeout</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.9">Section 10.4.9</a> </td>
        </tr>
        <tr>
            <td>409</td>
            <td>Conflict</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.10">Section 10.4.10</a> </td>
        </tr>
        <tr>
            <td>410</td>
            <td>Gone</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.11">Section 10.4.11</a> </td>
        </tr>
        <tr>
            <td>411</td>
            <td>Length Required</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.12">Section 10.4.12</a> </td>
        </tr>
        <tr>
            <td>412</td>
            <td>Precondition Failed</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.13">Section 10.4.13</a> </td>
        </tr>
        <tr>
            <td>413</td>
            <td>Request Entity Too Large</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.14">Section 10.4.14</a> </td>
        </tr>
        <tr>
            <td>414</td>
            <td>Request-URI Too Long</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.15">Section 10.4.15</a> </td>
        </tr>
        <tr>
            <td>415</td>
            <td>Unsupported Media Type</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.16">Section 10.4.16</a> </td>
        </tr>
        <tr>
            <td>416</td>
            <td>Requested Range Not Satisfiable</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.17">Section 10.4.17</a> </td>
        </tr>
        <tr>
            <td>417</td>
            <td>Expectation Failed</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.4.18">Section 10.4.18</a> </td>
        </tr>
        <tr>
            <td>422</td>
            <td>Unprocessable Entity</td>
            <td> <a href="#RFC4918"><cite title="HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)">[RFC4918]</cite></a> , <a href="http://rfc.askapache.com/rfc4918#section-11.2">Section 11.2</a> </td>
        </tr>
        <tr>
            <td>423</td>
            <td>Locked</td>
            <td> <a href="#RFC4918"><cite title="HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)">[RFC4918]</cite></a> , <a href="http://rfc.askapache.com/rfc4918#section-11.3">Section 11.3</a> </td>
        </tr>
        <tr>
            <td>424</td>
            <td>Failed Dependency</td>
            <td> <a href="#RFC4918"><cite title="HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)">[RFC4918]</cite></a> , <a href="http://rfc.askapache.com/rfc4918#section-11.4">Section 11.4</a> </td>
        </tr>
        <tr>
            <td>426</td>
            <td>Upgrade Required</td>
            <td> <a href="#RFC2817"><cite title="Upgrading to TLS Within HTTP/1.1">[RFC2817]</cite></a> , <a href="http://rfc.askapache.com/rfc2817#section-6">Section 6</a> </td>
        </tr>
        <tr>
            <td>500</td>
            <td>Internal Server Error</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.5.1">Section 10.5.1</a> </td>
        </tr>
        <tr>
            <td>501</td>
            <td>Not Implemented</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.5.2">Section 10.5.2</a> </td>
        </tr>
        <tr>
            <td>502</td>
            <td>Bad Gateway</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.5.3">Section 10.5.3</a> </td>
        </tr>
        <tr>
            <td>503</td>
            <td>Service Unavailable</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.5.4">Section 10.5.4</a> </td>
        </tr>
        <tr>
            <td>504</td>
            <td>Gateway Timeout</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.5.5">Section 10.5.5</a> </td>
        </tr>
        <tr>
            <td>505</td>
            <td>HTTP Version Not Supported</td>
            <td> <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> , <a href="http://rfc.askapache.com/rfc2616#section-10.5.6">Section 10.5.6</a> </td>
        </tr>
        <tr>
            <td>506</td>
            <td>Variant Also Negotiates</td>
            <td> <a href="#RFC2295"><cite title="Transparent Content Negotiation in HTTP">[RFC2295]</cite></a> , <a href="http://rfc.askapache.com/rfc2295#section-8.1">Section 8.1</a> </td>
        </tr>
        <tr>
            <td>507</td>
            <td>Insufficient Storage</td>
            <td> <a href="#RFC4918"><cite title="HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)">[RFC4918]</cite></a> , <a href="http://rfc.askapache.com/rfc4918#section-11.5">Section 11.5</a> </td>
        </tr>
        <tr>
            <td>510</td>
            <td>Not Extended</td>
            <td> <a href="#RFC2774"><cite title="An HTTP Extension Framework">[RFC2774]</cite></a> , <a href="http://rfc.askapache.com/rfc2774#section-7">Section 7</a> </td>
        </tr>
    </tbody>
</table>


<h2>WordPress 2.8 Changes</h2>
<p>I just learned that <a href="https://core.trac.wordpress.org/ticket/9297">my modification</a> to the WordPress core was <a href="https://core.trac.wordpress.org/changeset/10740">accepted</a> and will be implemented for version 2.8!  This may mean WordPress is the only 100% HTTP/1.1 compliant software on the net!  Below is the new list (<em>I thought someone out there could use the php array</em>) and as you can see, unfortunately<strong>418 I'm a teapot</strong>didn't make it ;)</p>
<pre>$wp_header_to_desc = array(
  100 =&gt; &#039;Continue&#039;,
  101 =&gt; &#039;Switching Protocols&#039;,
  102 =&gt; &#039;Processing&#039;,
&nbsp;
  200 =&gt; &#039;OK&#039;,
  201 =&gt; &#039;Created&#039;,
  202 =&gt; &#039;Accepted&#039;,
  203 =&gt; &#039;Non-Authoritative Information&#039;,
  204 =&gt; &#039;No Content&#039;,
  205 =&gt; &#039;Reset Content&#039;,
  206 =&gt; &#039;Partial Content&#039;,
  207 =&gt; &#039;Multi-Status&#039;,
  226 =&gt; &#039;IM Used&#039;,
&nbsp;
  300 =&gt; &#039;Multiple Choices&#039;,
  301 =&gt; &#039;Moved Permanently&#039;,
  302 =&gt; &#039;Found&#039;,
  303 =&gt; &#039;See Other&#039;,
  304 =&gt; &#039;Not Modified&#039;,
  305 =&gt; &#039;Use Proxy&#039;,
  306 =&gt; &#039;Reserved&#039;,
  307 =&gt; &#039;Temporary Redirect&#039;,
&nbsp;
  400 =&gt; &#039;Bad Request&#039;,
  401 =&gt; &#039;Unauthorized&#039;,
  402 =&gt; &#039;Payment Required&#039;,
  403 =&gt; &#039;Forbidden&#039;,
  404 =&gt; &#039;Not Found&#039;,
  405 =&gt; &#039;Method Not Allowed&#039;,
  406 =&gt; &#039;Not Acceptable&#039;,
  407 =&gt; &#039;Proxy Authentication Required&#039;,
  408 =&gt; &#039;Request Timeout&#039;,
  409 =&gt; &#039;Conflict&#039;,
  410 =&gt; &#039;Gone&#039;,
  411 =&gt; &#039;Length Required&#039;,
  412 =&gt; &#039;Precondition Failed&#039;,
  413 =&gt; &#039;Request Entity Too Large&#039;,
  414 =&gt; &#039;Request-URI Too Long&#039;,
  415 =&gt; &#039;Unsupported Media Type&#039;,
  416 =&gt; &#039;Requested Range Not Satisfiable&#039;,
  417 =&gt; &#039;Expectation Failed&#039;,
  422 =&gt; &#039;Unprocessable Entity&#039;,
  423 =&gt; &#039;Locked&#039;,
  424 =&gt; &#039;Failed Dependency&#039;,
  426 =&gt; &#039;Upgrade Required&#039;,
&nbsp;
  500 =&gt; &#039;Internal Server Error&#039;,
  501 =&gt; &#039;Not Implemented&#039;,
  502 =&gt; &#039;Bad Gateway&#039;,
  503 =&gt; &#039;Service Unavailable&#039;,
  504 =&gt; &#039;Gateway Timeout&#039;,
  505 =&gt; &#039;HTTP Version Not Supported&#039;,
  506 =&gt; &#039;Variant Also Negotiates&#039;,
  507 =&gt; &#039;Insufficient Storage&#039;,
  510 =&gt; &#039;Not Extended&#039;
);</pre>


<h2>RIPE WHOIS</h2>
<blockquote cite="http://labs.ripe.net/content/ripe-database-api-documentation">
    <p>
    <p>All the status codes are standard HTTP codes ( <a href="http://www.iana.org/assignments/http-status-codes">http://www.iana.org/assignments/http-status-codes</a> ).</p>
    <p></p>
    <p>Clients should avoid any form of coupling with the the text/plain error message contained in response body since it may change between different releases of the API and is only intended as a starting point for indentifying the real causes of the exception event.</p>
    <p>The following table gives a brief description of the mapping between standard Whois V.3 responses and the related REST services status codes. Consider this table as just an example of the error mapping strategy, it may change with future releases.</p>
    </p>
</blockquote>
<table>
    <tbody>
        <tr>
            <th>System Exception</th>
            <th>Whois Error</th>
            <th>HTTP Status Code</th>
        </tr>
        <tr>
            <td>IllegalArgumentException</td>
            <td></td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>IllegalStateException</td>
            <td></td>
            <td>Internal Server Error (500)</td>
        </tr>
        <tr>
            <td>UnsupportedOperationException</td>
            <td></td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>ObjectNotFoundException</td>
            <td></td>
            <td>Not Found (404)</td>
        </tr>
        <tr>
            <td>IllegalStateException</td>
            <td></td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>IOException</td>
            <td></td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>SystemException</td>
            <td></td>
            <td>Internal Server Error (500)</td>
        </tr>
        <tr>
            <td>TooManyResultsException</td>
            <td></td>
            <td>Internal Server Error (500)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>No Entries Found (101)</td>
            <td>Not Found (404)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Unknown Source (102)</td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Unknown Object Type (103)</td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Unknown Attribute in Query (104)</td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Attribute Is Not Inverse Searchable (105)</td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>No Search Key Specified (106)</td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Access Denied (201)</td>
            <td>Forbidden (403)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Access Control Limit Reached (202)</td>
            <td>Forbidden (403)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Address Passing Not Allowed (203)</td>
            <td>Bad Request (400)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Maximum Referral Lines Exceeded (204)</td>
            <td>Internal Server Error (500)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Connection Has Been Closed(301)</td>
            <td>Internal Server Error (500)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Referral Timeout (302)</td>
            <td>Internal Server Error (500)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>No Referral Host (303)</td>
            <td>Internal Server Error (500)</td>
        </tr>
        <tr>
            <td>WhoisServerException</td>
            <td>Referral Host Not Responding (304)</td>
            <td>Internal Server Error (500)</td>
        </tr>
    </tbody>
</table>
<blockquote cite="http://labs.ripe.net/content/ripe-database-api-documentation">
    <p>
    <p>Clients will have to define error messages generic enough to represent the four main error conditions, that are Bad Request, Forbidden, Not Found and Internal Server Error.</p>
    <p>For example a possible mapping for client side error messages may be:</p>
    </p>
</blockquote>
<table>
    <tbody>
        <tr>
            <th>HTTP Status Code</th>
            <th>Error Message</th>
        </tr>
        <tr>
            <td>Bad Request (400)</td>
            <td>The service is unable to understand and process the query.</td>
        </tr>
        <tr>
            <td>Forbidden (403)</td>
            <td>Query limit exceeded.</td>
        </tr>
        <tr>
            <td>Not Found (404)</td>
            <td>No results were found for Your search "<tt>Search term</tt>"</td>
        </tr>
        <tr>
            <td>Internal Server Error (500)</td>
            <td>The server encountered an unexpected condition which prevented it from fulfilling the request.</td>
        </tr>
    </tbody>
</table>


<h2>Helpful HTTP Links</h2>
<ol>
    <li> <a href="http://www.iana.org/assignments/http-status-codes">IANA registry</a> </li>
    <li> <a href="http://rfc.askapache.com/rfc2324">Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)</a> </li>
    <li> <a href="http://livedocs.adobe.com/fms/2/docs/00000338.html">Adobe Flash status code definitions (ie 408)</a> </li>
    <li> <a href="http://support.microsoft.com/?id=318380">Microsoft Internet Information Server Status Codes and Sub-Codes</a> </li>
    <li> <a href="http://zamez.org/httplint?url=http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html">httplint</a> </li>
    <li> <a href="http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html">HTTP Headers, brief intro.</a> </li>
    <li> <a href="http://www.w3.org/TR/cuap">Common User-Agent Issues</a> </li>
    <li>[RFC2295] <a href="mailto:koen@win.tue.nl" title="Technische Universiteit Eindhoven">Holtman, K.</a> and <a href="mailto:mutz@hpl.hp.com" title="Hewlett-Packard Company">A.H. Mutz</a> , " <a href="http://rfc.askapache.com/rfc2295">Transparent Content Negotiation in HTTP</a> ", RFC 2295, March 1998.</li>
    <li>[RFC2518] <a href="mailto:yarong@microsoft.com" title="Microsoft Corporation">Goland, Y.</a> , <a href="mailto:ejw@ics.uci.edu" title="Dept. Of Information and Computer Science, University of California, Irvine">Whitehead, E.</a> , <a href="mailto:asad@netscape.com" title="Netscape">Faizi, A.</a> , <a href="mailto:srcarter@novell.com" title="Novell">Carter, S.R.</a> , and <a href="mailto:dcjensen@novell.com" title="Novell">D. Jensen</a> , " <a href="http://rfc.askapache.com/rfc2518">HTTP Extensions for Distributed Authoring -- WEBDAV</a> ", RFC 2518, February 1999.</li>
    <li>[RFC2616] <a href="mailto:fielding@ics.uci.edu" title="University of California, Irvine">Fielding, R.</a> , <a href="mailto:jg@w3.org" title="W3C">Gettys, J.</a> , <a href="mailto:mogul@wrl.dec.com" title="Compaq Computer Corporation">Mogul, J.</a> , <a href="mailto:frystyk@w3.org" title="MIT Laboratory for Computer Science">Frystyk, H.</a> , <a href="mailto:masinter@parc.xerox.com" title="Xerox Corporation">Masinter, L.</a> , <a href="mailto:paulle@microsoft.com" title="Microsoft Corporation">Leach, P.</a> , and <a href="mailto:timbl@w3.org" title="W3C">T. Berners-Lee</a> , " <a href="http://rfc.askapache.com/rfc2616">Hypertext Transfer Protocol -- HTTP/1.1</a> ", RFC 2616, June 1999.</li>
    <li>[RFC2774] <a href="mailto:frystyk@microsoft.com" title="Microsoft Corporation">Nielsen, H.</a> , <a href="mailto:paulle@microsoft.com" title="Microsoft Corporation">Leach, P.</a> , and <a href="mailto:lawrence@agranat.com" title="Agranat Systems, Inc.">S. Lawrence</a> , " <a href="http://rfc.askapache.com/rfc2774">An HTTP Extension Framework</a> ", RFC 2774, February 2000.</li>
    <li>[RFC2817] Khare, R. and S. Lawrence, " <a href="http://rfc.askapache.com/rfc2817">Upgrading to TLS Within HTTP/1.1</a> ", RFC 2817, May 2000.</li>
    <li>[RFC3229] Mogul, J., Krishnamurthy, B., Douglis, F., Feldmann, A., Goland, Y., van Hoff, A., and D. Hellerstein, " <a href="http://rfc.askapache.com/rfc3229">Delta encoding in HTTP</a> ", RFC 3229, January 2002.</li>
    <li>[RFC4918] <a href="mailto:ldusseault@commerce.net" title="CommerceNet">Dusseault, L., Ed.</a> , " <a href="http://rfc.askapache.com/rfc4918">HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</a> ", RFC 4918, June 2007.</li>
</ol><p><a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html"></a><a href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html">HTTP Status Codes and Htaccess ErrorDocuments</a> originally appeared on <cite>AskApache.com</cite> </p>]]></content:encoded>
			<wfw:commentRss>http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Htaccess SetEnvIf and SetEnvIfNoCase Examples</title>
		<link>http://www.askapache.com/htaccess/setenvif.html</link>
		<comments>http://www.askapache.com/htaccess/setenvif.html#comments</comments>
		<pubDate>Sun, 07 Dec 2008 17:36:59 +0000</pubDate>
		<dc:creator>AskApache</dc:creator>
				<category><![CDATA[Htaccess]]></category>

		<guid isPermaLink="false">http://www.askapache.com/htaccess/setenvif.html</guid>
		<description><![CDATA[<p>SetEnv, SetEnvIf, and SetEnvIfNoCase directives conditionally set environment variables accessible by scripts and apache based on HTTP Headers, Variables, and Request information.</p>
<ul class="TOCC">
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#setenvif-variables" title="Unique mod_setenvif Variables">Unique mod_setenvif Variables</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#http-headers" title="Populates HTTP_MY_ Variables with mod_setenvif variable values">Populates HTTP_MY_ Variables with mod_setenvif variable values</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#remote-host" title="Set REMOTE_HOST to Server_Name">Set REMOTE_HOST to HTTP_HOST</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#allow-host" title="Allows only if HOST Header is present in request">Allows only if HOST Header is present in request</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#header-copy" title="Add values from HTTP Headers">Add values from HTTP Headers</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#redirect-status" title="Set the REDIRECT_STATUS for Interpreter Security">Set the REDIRECT_STATUS for Interpreter Security</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.askapache.com/htaccess/setenvif.html"></a><a href="http://www.askapache.com/htaccess/setenvif.html"><cite>AskApache.com</cite></a></p><p><strong>SetEnvIf</strong> and <strong>SetEnvIfNoCase</strong> are really useful directives supplied by the <a href="http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html">mod_setenvif module</a> that allow you to conditionally set environment variables accessible by scripts and apache based on the value of HTTP Headers, Other Variables, and Request information.</p>

<p class="anote">For debugging, you may want to use my <a href="http://www.askapache.com/shellscript/apache-printenv-improvement.html">server environment variable debugging script</a></p>
<ul class="TOCC">
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#setenvif-variables" title="Unique mod_setenvif Variables">Unique mod_setenvif Variables</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#http-headers" title="Populates HTTP_MY_ Variables with mod_setenvif variable values">Populates HTTP_MY_ Variables with mod_setenvif variable values</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#remote-host" title="Set REMOTE_HOST to Server_Name">Set REMOTE_HOST to HTTP_HOST</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#allow-host" title="Allows only if HOST Header is present in request">Allows only if HOST Header is present in request</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#header-copy" title="Add values from HTTP Headers">Add values from HTTP Headers</a></li>
	<li><a href="http://www.askapache.com/htaccess/setenvif.html#redirect-status" title="Set the REDIRECT_STATUS for Interpreter Security">Set the REDIRECT_STATUS for Interpreter Security</a></li>
</ul>


<h2><a href="#setenvif-variables" id="setenvif-variables" title="Unique mod_setenvif Variables">Unique mod_setenvif Variables</a></h2>
<p>These can be used for <code>attribute</code>.</p>
<dl>
	<dt>Remote_Host</dt>
	<dd>the hostname (if available) of the client making the request - <code>crawl-66-249-70-24.googlebot.com</code></dd>
	<dt>Remote_Addr</dt>
	<dd>IP address of the client making the request - <code>66.249.70.24</code></dd>
	<dt>Server_Addr</dt>
	<dd>IP address of the server on which the request was received - <code>208.113.183.103</code></dd>
	<dt>Request_Method</dt>
	<dd>name of the method being used - <code>GET</code></dd>
	<dt>Request_Protocol</dt>
	<dd>name and version of the protocol with which the request was made - <code>HTTP/1.1</code></dd>
	<dt>Request_URI</dt>
	<dd>the resource requested on the HTTP request line -- generally the portion of the URL following the scheme and host portion without the query string - <code>/robots.txt</code></dd>
</dl>



<blockquote cite="http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html"><p>Syntax: </p><pre>SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...</pre></blockquote>



<h2><a href="#http-headers" id="http-headers" title="Populates HTTP_MY_ Variables with mod_setenvif variable values">Populates HTTP_MY_ Variables with mod_setenvif variable values</a></h2>
<pre>SetEnvIfNoCase Remote_Host "(.*)" HTTP_MY_REMOTE_HOST=$1
SetEnvIfNoCase Remote_Addr "(.*)" HTTP_MY_REMOTE_ADDR=$1
SetEnvIfNoCase Server_Addr "(.*)" HTTP_MY_SERVER_ADDR=$1
SetEnvIfNoCase Request_Method "(.*)" HTTP_MY_REQUEST_METHOD=$1
SetEnvIfNoCase Request_Protocol "(.*)" HTTP_MY_REQUEST_PROTOCOL=$1
SetEnvIfNoCase Request_URI "(.*)" HTTP_MY_REQUEST_URI=$1</pre>


<h2><a href="#remote-host" id="remote-host" title="Set REMOTE_HOST to HTTP_HOST">Set REMOTE_HOST to HTTP_HOST</a></h2>
<p>Sets REMOTE_HOST to www.askapache.com if Remote_Addr=208.113.183.103.  This can be useful if your server doesn't automatically do a reverse lookup on a remote address, so this way you can tell if the request was internal/from your server.</p>
<pre>SetEnvIf Remote_Addr 208\.113\.183\.103 REMOTE_HOST=www.askapache.com</pre>


<h2><a href="#allow-host" id="allow-host" title="Allows only if HOST Header is present in request">Allows only if HOST Header is present in request</a></h2>
<pre>SetEnvIfNoCase ^HOST$ .+ HTTP_MY_HAS_HOST
Order Deny,Allow
Deny from All
Allow from env=HTTP_MY_HAS_HOST</pre>
<p>or</p>
<pre>SetEnvIfNoCase Host .+ HTTP_MY_HAS_HOST
Order Deny,Allow
Deny from All
Allow from env=HTTP_MY_HAS_HOST</pre>


<h2><a href="#header-copy" id="header-copy" title="Add values from HTTP Headers">Add values from HTTP Headers</a></h2>
<pre>SetEnvIfNoCase ^If-Modified-Since$ "(.+)" HTTP_IF_MODIFIED_SINCE=$1
SetEnvIfNoCase ^If-None-Match$ "(.+)" HTTP_IF_NONE_MATCH=$1
SetEnvIfNoCase ^Cache-Control$ "(.+)" HTTP_CACHE_CONTROL=$1
SetEnvIfNoCase ^Connection$ "(.+)" HTTP_CONNECTION=$1
SetEnvIfNoCase ^Keep-Alive$ "(.+)" HTTP_KEEP_ALIVE=$1
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
SetEnvIfNoCase ^Cookie$ "(.+)" HTTP_MY_COOKIE=$1</pre>


<h2><a href="#redirect-status" id="redirect-status" title="Set the REDIRECT_STATUS for Interpreter Security">Set the REDIRECT_STATUS for Interpreter Security</a></h2>
<p>This is useful in disallowing direct access to interpreters like shell scripts, cgi scripts, and other interpreters.  Only works this way if you have a static IP for your server.  So the only way to access these files is by instructing the server itself to request the file, using an Action directive or by requesting the file through a .php or other script using curl or wget, or something like fsockopen.</p>
<pre>&lt;filesMatch "\.(cgi|sh|pl)$"&gt;
SetEnvIfNoCase Remote_Addr 208\.113\.183\.103 REDIRECT_STATUS
&nbsp;
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
&lt;/filesMatch&gt;</pre>


<h2>Block Bad Bots</h2>
<p>Can be useful if your site is getting hammered by spambots. Some nice examples from around the net are at <a href="http://www.askapache.com/htaccess/fight-blog-spam-with-apache.html">Fight Blog Spam With Apache</a>...  Keep in mind the HTTP_USER_AGENT is directly from the client, so its easy to spoof / change.  Instead use <a href="http://www.askapache.com/htaccess/mod_security-htaccess-tricks.html">mod_security</a> for a much better solution.</p>
<pre>SetEnvIfNoCase User-Agent "^Bandit" bad_bot
SetEnvIfNoCase User-Agent "^Baiduspider" bad_bot
SetEnvIfNoCase User-Agent "^BatchFTP" bad_bot
SetEnvIfNoCase User-Agent "^Bigfoot" bad_bot
SetEnvIfNoCase User-Agent "^Black.Hole" bad_bot
&nbsp;
Order Allow,Deny
Allow from All
Deny from env=bad_bot</pre>


<h2>Allow Search robots</h2>
<p>This does the opposite of above, allowing ONLY these web robots access.  Other than rogue robots, configuring your <a href="http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html">robots.txt file</a> correctly will keep most robots where you want them.</p>
<pre>SetEnvIfNoCase User-Agent .*google.* search_robot
SetEnvIfNoCase User-Agent .*yahoo.* search_robot
SetEnvIfNoCase User-Agent .*bot.* search_robot
SetEnvIfNoCase User-Agent .*ask.* search_robot
&nbsp;
Order Deny,Allow
Deny from All
Allow from env=search_robot</pre>

<h2>SetEnvIf Directive</a></h2>
<table>
  <tbody>
    <tr>
      <th><a href="#setenvif-description">Description:</a></th>
      <td>Sets environment variables based on attributes of the request </td>
    </tr>
    <tr>
      <th><a href="#setenvif-syntax">Syntax:</a></th>
      <td><code>SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...</code></td>
    </tr>
    <tr>
      <th><a href="#setenvif-context">Context:</a></th>
      <td>server config, virtual host, directory, .htaccess</td>
    </tr>
    <tr>
      <th><a href="#setenvif-override">Override:</a></th>
      <td>FileInfo</td>
    </tr>
    <tr>
      <th><a href="#setenvif-status">Status:</a></th>
      <td>Base</td>
    </tr>
    <tr>
      <th><a href="#setenvif-module">Module:</a></th>
      <td>mod_setenvif</td>
    </tr>
  </tbody>
</table>
<p>The <code>SetEnvIf</code> directive defines environment variables based on attributes of the request. The attribute specified in the first argument can be one of three things:</p>
<ol>
  <li>An HTTP request header field (see <a href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a> for more information about these); for example: <code>Host</code>, <code>User-Agent</code>, <code>Referer</code>, and <code>Accept-Language</code>.  A regular expression may be used to specify a set of request headers.</li>
  <li>One of the following aspects of the request:
    <ul>
      <li><code>Remote_Host</code> - the hostname (if available) of the client making the request</li>
      <li><code>Remote_Addr</code> - the IP address of the client making the request</li>
      <li><code>Server_Addr</code> - the IP address of the server on which the request was received (only with versions later than 2.0.43)</li>
      <li><code>Request_Method</code> - the name of the method being used (<code>GET</code>, <code>POST</code>, et cetera)</li>
      <li><code>Request_Protocol</code> - the name and version of the protocol with which the request was made (e.g., "HTTP/0.9", "HTTP/1.1", etc.)</li>
      <li><code>Request_URI</code> - the resource requested on the HTTP  request line -- generally the portion of the URL following the scheme and host portion without the query string. See the <code>RewriteCond</code> directive of <code>mod_rewrite</code> for extra information on how to match your query string.</li>
    </ul>
  </li>
  <li>The name of an environment variable in the list of those associated with the request. This allows <code>SetEnvIf</code> directives to test against the result of prior matches. Only those environment variables defined by earlier <code>SetEnvIf[NoCase]</code> directives are available for testing in this manner. 'Earlier' means that they were defined at a broader scope (such as server-wide) or previously in the current directive's scope. Environment variables will be considered only if there was no match among request characteristics and a regular expression was not used for the attribute.</li>
</ol>

<p>The second argument (regex) is a regular expression.  If the regex matches against the attribute, then the remainder of the arguments are evaluated.</p>
<p>The rest of the arguments give the names of variables to set, and optionally values to which they should be set. These take the form of</p>
<ol>
  <li><code>varname</code></li>
  <li><code>!varname</code></li>
  <li><code>varname=value</code></li>
</ol>
<p>In the first form, the value will be set to "1". The second will remove the given variable if already defined, and the third will set the variable to the literal value given by <code>value</code>. <em>Since version 2.0.51</em> Apache will recognize occurrences of <code>$1</code>..<code>$9</code> within <var>value</var> and replace them by parenthesized subexpressions of <var>regex</var>.</p>

<h4>SetEnvIf Example:</h4>
<pre>SetEnvIf Request_URI "\.gif$" object_is_image=gif
SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
SetEnvIf Referer www\.askapache\.com intra_site_referral
SetEnvIf object_is_image xbm XBIT_PROCESSING=1
SetEnvIf ^SETENVIF*  ^[a-z].*  HAS_SETENVIF</pre>
<p>The first three will set the environment variable <code>object_is_image</code> if the request was for an image file, and the fourth sets <code>intra_site_referral</code> if the referring page was somewhere on the <code>www.askapache.com</code> Web site.</p>
<p>The last example will set environment variable <code>HAS_SETENVIF</code> if the request contains any headers that begin with "SETENVIF" whose values begins with any character in the set [a-z].</p>


<hr class="HR0" />
<h2>htaccess Guide Sections</h2>
<ul class="ou">
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/htaccess-for-webmasters.html" title="Apache HTTP Web Server htaccess tips and tricks">htaccess tricks for Webmasters</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html" title="Creating and using HTTP Headers with htaccess">HTTP Header control with htaccess</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/php-htaccess-tips-and-tricks.html" title="mod_php or php as a cgi with htaccess tips, htaccess php tricks">PHP on Apache tips and tricks</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/seo-search-engine-friendly-redirects-without-mod_rewrite.html" title="SEO-Friendly 301 Redirects without mod_rewrite">SEO Redirects without mod_rewrite</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html" title="mod_rewrite tips and tricks with RewriteEngine, RewriteBase, RewriteRule, and RewriteCond">mod_rewrite examples, tips, and tricks</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/speed-up-your-site-with-caching-and-cache-control.html" title="Caching, cache-control, cache, expires, and optimizing htaccess">HTTP Caching and Site Speedups</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/apache-authentication-in-htaccess.html" title="htaccess and Apache authentication with htpasswd, 401, and 403">Authentication on Apache</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/security-with-htaccess.html" title="Security, hacking, and anti-hacking tips and tricks for htaccess">htaccess Security Tricks and Tips</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/ssl-example-usage-in-htaccess.html" title="Apache SSL examples">SSL tips and examples</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/apache-variable-fun-in-htaccess.html" title="Apache variables info, tricks, and tips">Variable Fun (mod_env) Section</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/mod_security-htaccess-tricks.html" title="mod_security Guide and sample mod_Security diretive usage in .htaccess">.htaccess Security with MOD_SECURITY</a></li>
	<li><a rel="chapter bookmark" href="http://www.askapache.com/htaccess/setenvif.html" title="SetEnvIf and SetEnvIfNoCase Examples for conditionally setting variables in Apache .htaccess">SetEnvIf and SetEnvIfNoCase Examples</a></li>
</ul>
<hr class="HR0" />


<p class="ment"><a rel="prev" href="http://www.askapache.com/htaccess/mod_security-htaccess-tricks.html" title="mod_security Guide and sample mod_Security directive usage in .htaccess">&laquo;  .htaccess Security with MOD_SECURITY</a> | <a href="http://www.askapache.com/htaccess/htaccess.html" class="acd1" rel="Contents Index Start" title=".htaccess tutorial">.htaccess Tutorial Index</a></p><p><a href="http://www.askapache.com/htaccess/setenvif.html"></a><a href="http://www.askapache.com/htaccess/setenvif.html">Htaccess SetEnvIf and SetEnvIfNoCase Examples</a> originally appeared on <cite>AskApache.com</cite> </p>]]></content:encoded>
			<wfw:commentRss>http://www.askapache.com/htaccess/setenvif.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Blocking Bad Bots and Scrapers with .htaccess</title>
		<link>http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html</link>
		<comments>http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html#comments</comments>
		<pubDate>Tue, 08 Apr 2008 15:04:11 +0000</pubDate>
		<dc:creator>AskApache</dc:creator>
				<category><![CDATA[Htaccess]]></category>

		<guid isPermaLink="false">http://www.askapache.com/?p=549</guid>
		<description><![CDATA[<p><a class="IFL" href='http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html'><img src="http://uploads.askapache.com/2008/04/bad_robot1.png" alt="Block Bad Robot" title="Block Bad Robot" width="112" height="150" /></a>Want to block a bad robot or web scraper using .htaccess files?  Here are 2 methods that illustrate blocking 436 various user-agents.<br class="C" /></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html"></a><a href="http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html"><cite>AskApache.com</cite></a></p><p><a rel="lb" class="IFL" href='http://uploads.askapache.com/2008/04/bad_robot.png'><img src="http://uploads.askapache.com/2008/04/bad_robot.png" alt="Bad Robot!" title="Bad Robot!" /></a>This article shows 2 methods of blocking <a href="#badbotlist">this entire list of bad robots and web scrapers</a> with .htaccess files using <a href="#setenvif" title="jump to blocking bots with setenvif guide">SetEnvIfNoCase</a> or using <a href="#botblockrewrites" title="jump to blocking bots with mod_rewrite guide">RewriteRules with mod_rewrite</a><br class="C" /></p>






<h2><a id="botblockrewrites">Blocking Bad Robots and Web Scrapers with RewriteRules</a></h2>
<pre>ErrorDocument 403 /403.html
&nbsp;
RewriteEngine On
RewriteBase /
&nbsp;
# IF THE UA STARTS WITH THESE
RewriteCond %{HTTP_USER_AGENT} ^(aesop_com_spiderman|alexibot|backweb|bandit|batchftp|bigfoot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(black.?hole|blackwidow|blowfish|botalot|buddy|builtbottough|bullseye) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(cheesebot|cherrypicker|chinaclaw|collector|copier|copyrightcheck) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(cosmos|crescent|curl|custo|da|diibot|disco|dittospyder|dragonfly) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(drip|easydl|ebingbong|ecatch|eirgrabber|emailcollector|emailsiphon) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(emailwolf|erocrawler|exabot|eyenetie|filehound|flashget|flunky) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(frontpage|getright|getweb|go.?zilla|go-ahead-got-it|gotit|grabnet) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(grafula|harvest|hloader|hmview|httplib|httrack|humanlinks|ilsebot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(infonavirobot|infotekies|intelliseek|interget|iria|jennybot|jetcar) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(joc|justview|jyxobot|kenjin|keyword|larbin|leechftp|lexibot|lftp|libweb) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(likse|linkscan|linkwalker|lnspiderguy|lwp|magnet|mag-net|markwatch) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(mata.?hari|memo|microsoft.?url|midown.?tool|miixpc|mirror|missigua) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(mister.?pix|moget|mozilla.?newt|nameprotect|navroad|backdoorbot|nearsite) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(net.?vampire|netants|netcraft|netmechanic|netspider|nextgensearchbot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(attach|nicerspro|nimblecrawler|npbot|octopus|offline.?explorer) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(offline.?navigator|openfind|outfoxbot|pagegrabber|papa|pavuk) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(pcbrowser|php.?version.?tracker|pockey|propowerbot|prowebwalker) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(psbot|pump|queryn|recorder|realdownload|reaper|reget|true_robot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(repomonkey|rma|internetseer|sitesnagger|siphon|slysearch|smartdownload) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(snake|snapbot|snoopy|sogou|spacebison|spankbot|spanner|sqworm|superbot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(superhttp|surfbot|asterias|suzuran|szukacz|takeout|teleport) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(telesoft|the.?intraformant|thenomad|tighttwatbot|titan|urldispatcher) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(turingos|turnitinbot|urly.?warning|vacuum|vci|voideye|whacker) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(libwww-perl|widow|wisenutbot|wwwoffle|xaldon|xenu|zeus|zyborg|anonymouse) [NC,OR]
&nbsp;
# STARTS WITH WEB
RewriteCond %{HTTP_USER_AGENT} ^web(zip|emaile|enhancer|fetch|go.?is|auto|bandit|clip|copier|master|reaper|sauger|site.?quester|whack) [NC,OR]
&nbsp;
# ANYWHERE IN UA -- GREEDY REGEX
RewriteCond %{HTTP_USER_AGENT} ^.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$ [NC]
&nbsp;
# ISSUE 403 / SERVE ERRORDOCUMENT
RewriteRule . - [F,L]</pre>



<h3>Alternate RewriteCond Rules</h3>
<pre>RewriteEngine on
&nbsp;
#Block spambots
RewriteCond %{HTTP:User-Agent} (?:Alexibot|Art-Online|asterias|BackDoorbot|Black.Hole|\
BlackWidow|BlowFish|botALot|BuiltbotTough|Bullseye|BunnySlippers|Cegbfeieh|Cheesebot|\
CherryPicker|ChinaClaw|CopyRightCheck|cosmos|Crescent|Custo|DISCo|DittoSpyder|DownloadsDemon|\
eCatch|EirGrabber|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|ExpresssWebPictures|ExtractorPro|\
EyeNetIE|FlashGet|Foobot|FrontPage|GetRight|GetWeb!|Go-Ahead-Got-It|Go!Zilla|GrabNet|Grafula|\
Harvest|hloader|HMView|httplib|HTTrack|humanlinks|ImagesStripper|ImagesSucker|IndysLibrary|\
InfonaviRobot|InterGET|Internet\sNinja|Jennybot|JetCar|JOC\sWeb\sSpider|Kenjin.Spider|Keyword.Density|\
larbin|LeechFTP|Lexibot|libWeb/clsHTTP|LinkextractorPro|LinkScan/8.1a.Unix|LinkWalker|lwp-trivial|\
Mass\sDownloader|Mata.Hari|Microsoft.URL|MIDown\stool|MIIxpc|Mister.PiX|Mister\sPiX|moget|\
Mozilla/3.Mozilla/2.01|Mozilla.*NEWT|Navroad|NearSite|NetAnts|NetMechanic|NetSpider|Net\sVampire|\
NetZIP|NICErsPRO|NPbot|Octopus|Offline.Explorer|Offline\sExplorer|Offline\sNavigator|Openfind|\
Pagerabber|Papa\sFoto|pavuk|pcBrowser|Program\sShareware\s1|ProPowerbot/2.14|ProWebWalker|ProWebWalker|\
psbot/0.1|QueryN.Metasearch|ReGet|RepoMonkey|RMA|SiteSnagger|SlySearch|SmartDownload|Spankbot|spanner|\
Superbot|SuperHTTP|Surfbot|suzuran|Szukacz/1.4|tAkeOut|Teleport|Teleport\sPro|Telesoft|The.Intraformant|\
TheNomad|TightTwatbot|Titan|toCrawl/UrlDispatcher|toCrawl/UrlDispatcher|True_Robot|turingos|\
Turnitinbot/1.5|URLy.Warning|VCI|VoidEYE|WebAuto|WebBandit|WebCopier|WebEMailExtrac.*|WebEnhancer|\
WebFetch|WebGo\sIS|Web.Image.Collector|Web\sImage\sCollector|WebLeacher|WebmasterWorldForumbot|\
WebReaper|WebSauger|Website\seXtractor|Website.Quester|Website\sQuester|Webster.Pro|WebStripper|\
Web\sSucker|WebWhacker|WebZip|Wget|Widow|[Ww]eb[Bb]andit|WWW-Collector-E|WWWOFFLE|\
Xaldon\sWebSpider|Xenu&#039;s|Zeus) [NC]
RewriteRule .? - [F]</pre>



<h2><a id="setenvif">Block Bad Bots with SetEnvIfNoCase</a></h2>
<pre>ErrorDocument 403 /403.html
&nbsp;
# IF THE UA STARTS WITH THESE
SetEnvIfNoCase ^User-Agent$ .*(aesop_com_spiderman|alexibot|backweb|bandit|batchftp|bigfoot) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(black.?hole|blackwidow|blowfish|botalot|buddy|builtbottough|bullseye) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(cheesebot|cherrypicker|chinaclaw|collector|copier|copyrightcheck) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(cosmos|crescent|curl|custo|da|diibot|disco|dittospyder|dragonfly) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(drip|easydl|ebingbong|ecatch|eirgrabber|emailcollector|emailsiphon) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(emailwolf|erocrawler|exabot|eyenetie|filehound|flashget|flunky) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(frontpage|getright|getweb|go.?zilla|go-ahead-got-it|gotit|grabnet) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(grafula|harvest|hloader|hmview|httplib|httrack|humanlinks|ilsebot) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(infonavirobot|infotekies|intelliseek|interget|iria|jennybot|jetcar) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(joc|justview|jyxobot|kenjin|keyword|larbin|leechftp|lexibot|lftp|libweb) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(likse|linkscan|linkwalker|lnspiderguy|lwp|magnet|mag-net|markwatch) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(mata.?hari|memo|microsoft.?url|midown.?tool|miixpc|mirror|missigua) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(mister.?pix|moget|mozilla.?newt|nameprotect|navroad|backdoorbot|nearsite) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(net.?vampire|netants|netcraft|netmechanic|netspider|nextgensearchbot) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(attach|nicerspro|nimblecrawler|npbot|octopus|offline.?explorer) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(offline.?navigator|openfind|outfoxbot|pagegrabber|papa|pavuk) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(pcbrowser|php.?version.?tracker|pockey|propowerbot|prowebwalker) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(psbot|pump|queryn|recorder|realdownload|reaper|reget|true_robot) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(repomonkey|rma|internetseer|sitesnagger|siphon|slysearch|smartdownload) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(snake|snapbot|snoopy|sogou|spacebison|spankbot|spanner|sqworm|superbot) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(superhttp|surfbot|asterias|suzuran|szukacz|takeout|teleport) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(telesoft|the.?intraformant|thenomad|tighttwatbot|titan|urldispatcher) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(turingos|turnitinbot|urly.?warning|vacuum|vci|voideye|whacker) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(widow|wisenutbot|wwwoffle|xaldon|xenu|zeus|zyborg|anonymouse) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*web(zip|emaile|enhancer|fetch|go.?is|auto|bandit|clip|copier|master|reaper|sauger|site.?quester|whack) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT</pre>







<h2><a id="badbotlist">Original Bad Bot / Web Scraper List</a></h2>
<ol>
<li><code>WebBandit</code></li><li><code>2icommerce</code></li><li><code>Accoona</code></li><li><code>ActiveTouristBot</code></li><li><code>adressendeutschland</code></li><li><code>aipbot</code></li><li><code>Alexibot</code></li><li><code>Alligator</code></li><li><code>AllSubmitter</code></li><li><code>almaden</code></li><li><code>anarchie</code></li><li><code>Anonymous</code></li><li><code>Apexoo</code></li><li><code>Aqua_Products</code></li><li><code>asterias</code></li><li><code>ASSORT</code></li><li><code>ATHENS</code></li><li><code>AtHome</code></li><li><code>Atomz</code></li><li><code>attache</code></li><li><code>autoemailspider</code></li><li><code>autohttp</code></li><li><code>b2w</code></li><li><code>bew</code></li><li><code>BackDoorBot</code></li><li><code>Badass</code></li><li><code>Baiduspider</code></li><li><code>Baiduspider+</code></li><li><code>BecomeBot</code></li><li><code>berts</code></li><li><code>Bitacle</code></li><li><code>Biz360</code></li><li><code>Black.Hole</code></li><li><code>BlackWidow</code></li><li><code>bladder fusion</code></li><li><code>Blog Checker</code></li><li><code>BlogPeople</code></li><li><code>Blogshares Spiders</code></li><li><code>Bloodhound</code></li><li><code>BlowFish</code></li><li><code>Board Bot</code></li><li><code>Bookmark search tool</code></li><li><code>BotALot</code></li><li><code>BotRightHere</code></li><li><code>Bot mailto:craftbot@yahoo.com</code></li><li><code>Bropwers</code></li><li><code>Browsezilla</code></li><li><code>BuiltBotTough</code></li><li><code>Bullseye</code></li><li><code>BunnySlippers</code></li><li><code>Cegbfeieh</code></li><li><code>CFNetwork</code></li><li><code>CheeseBot</code></li><li><code>CherryPicker</code></li><li><code>Crescent</code></li><li><code>charlotte/</code></li>
<li><code>ChinaClaw</code></li><li><code>Convera</code></li><li><code>Copernic</code></li><li><code>CopyRightCheck</code></li><li><code>cosmos</code></li><li><code>Crescent</code></li><li><code>c-spider</code></li><li><code>curl</code></li><li><code>Custo</code></li><li><code>Cyberz</code></li><li><code>DataCha0s</code></li><li><code>Daum</code></li><li><code>Deweb</code></li><li><code>Digger</code></li><li><code>Digimarc</code></li><li><code>digout4uagent</code></li><li><code>DIIbot</code></li><li><code>DISCo</code></li><li><code>DittoSpyder</code></li><li><code>DnloadMage</code></li><li><code>Download</code></li><li><code>dragonfly</code></li><li><code>DreamPassport</code></li><li><code>DSurf</code></li><li><code>DTS Agent</code></li><li><code>dumbot</code></li><li><code>DynaWeb</code></li><li><code>e-collector</code></li><li><code>EasyDL</code></li><li><code>EBrowse</code></li><li><code>eCatch</code></li><li><code>ecollector</code></li><li><code>edgeio</code></li><li><code>efp@gmx.net</code></li><li><code>EirGrabber</code></li><li><code>Email Extractor</code></li><li><code>EmailCollector</code></li><li><code>EmailSiphon</code></li><li><code>EmailWolf</code></li><li><code>EmeraldShield</code></li><li><code>Enterprise_Search</code></li><li><code>EroCrawler</code></li><li><code>ESurf</code></li><li><code>Eval</code></li><li><code>Everest-Vulcan</code></li><li><code>Exabot</code></li><li><code>Express</code></li><li><code>Extractor</code></li><li><code>ExtractorPro</code></li><li><code>EyeNetIE</code></li><li><code>FairAd</code></li><li><code>fastlwspider</code></li><li><code>fetch</code></li><li><code>FEZhead</code></li><li><code>FileHound</code></li><li><code>findlinks</code></li><li><code>Flaming AttackBot</code></li><li><code>FlashGet</code></li><li><code>FlickBot</code></li><li><code>Foobot</code></li><li><code>Forex</code></li><li><code>Franklin Locator</code></li><li><code>FreshDownload</code></li><li><code>FrontPage</code></li><li><code>FSurf</code></li><li><code>Gaisbot</code></li><li><code>Gamespy_Arcade</code></li><li><code>genieBot</code></li><li><code>GetBot</code></li><li><code>Getleft</code></li><li><code>GetRight</code></li><li><code>GetWeb!</code></li>
<li><code>Go!Zilla</code></li><li><code>Go-Ahead-Got-It</code></li><li><code>GOFORITBOT</code></li><li><code>GrabNet</code></li><li><code>Grafula</code></li><li><code>grub</code></li><li><code>Harvest</code></li><li><code>Hatena Antenna</code></li><li><code>heritrix</code></li><li><code>HLoader</code></li><li><code>HMView</code></li><li><code>holmes</code></li><li><code>HooWWWer</code></li><li><code>HouxouCrawler</code></li><li><code>HTTPGet</code></li><li><code>httplib</code></li><li><code>HTTPRetriever</code></li><li><code>HTTrack</code></li><li><code>humanlinks</code></li><li><code>IBM_Planetwide</code></li><li><code>iCCrawler</code></li><li><code>ichiro</code></li><li><code>iGetter</code></li><li><code>Image Stripper</code></li><li><code>Image Sucker</code></li><li><code>imagefetch</code></li><li><code>imds_monitor</code></li><li><code>IncyWincy</code></li><li><code>Industry Program</code></li><li><code>Indy</code></li><li><code>InetURL</code></li><li><code>InfoNaviRobot</code></li><li><code>InstallShield DigitalWizard</code></li><li><code>InterGET</code></li><li><code>IRLbot</code></li><li><code>Iron33</code></li><li><code>ISSpider</code></li><li><code>IUPUI Research Bot</code></li><li><code>Jakarta</code></li><li><code>java/</code></li><li><code>JBH Agent</code></li><li><code>JennyBot</code></li><li><code>JetCar</code></li><li><code>jeteye</code></li>
<li><code>jeteyebot</code></li><li><code>JoBo</code></li><li><code>JOC Web Spider</code></li><li><code>Kapere</code></li><li><code>Kenjin</code></li><li><code>Keyword Density</code></li><li><code>KRetrieve</code></li><li><code>ksoap</code></li><li><code>KWebGet</code></li><li><code>LapozzBot</code></li><li><code>larbin</code></li><li><code>leech</code></li><li><code>LeechFTP</code></li><li><code>LeechGet</code></li><li><code>leipzig.de</code></li><li><code>LexiBot</code></li><li><code>libWeb</code></li><li><code>libwww-FM</code></li><li><code>libwww-perl</code></li><li><code>LightningDownload</code></li><li><code>LinkextractorPro</code></li><li><code>Linkie</code></li><li><code>LinkScan</code></li><li><code>linktiger</code></li><li><code>LinkWalker</code></li><li><code>lmcrawler</code></li><li><code>LNSpiderguy</code></li><li><code>LocalcomBot</code></li><li><code>looksmart</code></li><li><code>LWP</code></li><li><code>Mac Finder</code></li><li><code>Mail Sweeper</code></li><li><code>mark.blonin</code></li><li><code>MaSagool</code></li><li><code>Mass</code></li><li><code>Mata Hari</code></li><li><code>MCspider</code></li>
<li><code>MetaProducts Download Express</code></li><li><code>Microsoft Data Access</code></li><li><code>Microsoft URL Control</code></li><li><code>MIDown</code></li><li><code>MIIxpc</code></li><li><code>Mirror</code></li><li><code>Missauga</code></li><li><code>Missouri College Browse</code></li><li><code>Mister</code></li><li><code>Monster</code></li><li><code>mkdb</code></li><li><code>moget</code></li><li><code>Moreoverbot</code></li><li><code>mothra/netscan</code></li><li><code>MovableType</code></li><li><code>Mozi!</code></li><li><code>Mozilla/22</code></li><li><code>Mozilla/3.0 (compatible)</code></li><li><code>Mozilla/5.0 (compatible; MSIE 5.0)</code></li><li><code>MSIE_6.0</code></li><li><code>MSIECrawler</code></li><li><code>MSProxy</code></li><li><code>MVAClient</code></li><li><code>MyFamilyBot</code></li><li><code>MyGetRight</code></li><li><code>nameprotect</code></li><li><code>NASA Search</code></li><li><code>Naver</code></li><li><code>Navroad</code></li><li><code>NearSite</code></li><li><code>NetAnts</code></li><li><code>netattache</code></li><li><code>NetCarta</code></li><li><code>NetMechanic</code></li><li><code>NetResearchServer</code></li><li><code>NetSpider</code></li><li><code>NetZIP</code></li><li><code>Net Vampire</code></li><li><code>NEWT ActiveX</code></li><li><code>Nextopia</code></li><li><code>NICErsPRO</code></li><li><code>ninja</code></li><li><code>NimbleCrawler</code></li><li><code>noxtrumbot</code></li><li><code>NPBot</code></li><li><code>Octopus</code></li><li><code>Offline</code></li><li><code>OK Mozilla</code></li>
<li><code>OmniExplorer</code></li><li><code>OpaL</code></li><li><code>Openbot</code></li><li><code>Openfind</code></li><li><code>OpenTextSiteCrawler</code></li><li><code>Oracle Ultra Search</code></li><li><code>OutfoxBot</code></li><li><code>P3P</code></li><li><code>PackRat</code></li><li><code>PageGrabber</code></li><li><code>PagmIEDownload</code></li><li><code>panscient</code></li><li><code>Papa Foto</code></li><li><code>pavuk</code></li><li><code>pcBrowser</code></li><li><code>perl</code></li><li><code>PerMan</code></li><li><code>PersonaPilot</code></li><li><code>PHP version</code></li><li><code>PlantyNet_WebRobot</code></li><li><code>playstarmusic</code></li><li><code>Plucker</code></li><li><code>Port Huron</code></li><li><code>Program Shareware</code></li><li><code>Progressive Download</code></li><li><code>ProPowerBot</code></li><li><code>prospector</code></li><li><code>ProWebWalker</code></li><li><code>Prozilla</code></li><li><code>psbot</code></li><li><code>psycheclone</code></li><li><code>puf</code></li><li><code>PushSite</code></li><li><code>PussyCat</code></li><li><code>PuxaRapido</code></li><li><code>Python-urllib</code></li><li><code>QuepasaCreep</code></li><li><code>QueryN</code></li><li><code>Radiation</code></li><li><code>RealDownload</code></li><li><code>RedCarpet</code></li><li><code>RedKernel</code></li><li><code>ReGet</code></li><li><code>relevantnoise</code></li><li><code>RepoMonkey</code></li><li><code>RMA</code></li><li><code>Rover</code></li><li><code>Rsync</code></li><li><code>RTG30</code></li><li><code>Rufus</code></li><li><code>SAPO</code></li><li><code>SBIder</code></li><li><code>scooter</code></li><li><code>ScoutAbout</code></li><li><code>script</code></li><li><code>searchpreview</code></li><li><code>searchterms</code></li><li><code>Seekbot</code></li><li><code>Serious</code></li><li><code>Shai</code></li><li><code>shelob</code></li><li><code>Shim-Crawler</code></li><li><code>SickleBot</code></li><li><code>sitecheck</code></li><li><code>SiteSnagger</code></li><li><code>Slurpy Verifier</code></li><li><code>SlySearch</code></li><li><code>SmartDownload</code></li><li><code>sna-</code></li><li><code>snagger</code></li><li><code>Snoopy</code></li>
<li><code>sogou</code></li><li><code>sootle</code></li><li><code>So-net” bat_bot</code></li><li><code>SpankBot” bat_bot</code></li><li><code>spanner” bat_bot</code></li><li><code>SpeedDownload</code></li><li><code>Spegla</code></li><li><code>Sphere</code></li><li><code>Sphider</code></li><li><code>SpiderBot</code></li><li><code>sproose</code></li><li><code>SQ Webscanner</code></li><li><code>Sqworm</code></li><li><code>Stamina</code></li><li><code>Stanford</code></li><li><code>studybot</code></li><li><code>SuperBot</code></li><li><code>SuperHTTP</code></li><li><code>Surfbot</code></li><li><code>SurfWalker</code></li><li><code>suzuran</code></li><li><code>Szukacz</code></li><li><code>tAkeOut</code></li><li><code>TALWinHttpClient</code></li><li><code>tarspider</code></li><li><code>Teleport</code></li><li><code>Telesoft</code></li><li><code>Templeton</code></li><li><code>TestBED</code></li><li><code>The Intraformant</code></li><li><code>TheNomad</code></li><li><code>TightTwatBot</code></li><li><code>Titan</code></li><li><code>toCrawl/UrlDispatcher</code></li><li><code>True_Robot</code></li><li><code>turingos</code></li><li><code>TurnitinBot</code></li><li><code>Twisted PageGetter</code></li><li><code>UCmore</code></li><li><code>UdmSearch</code></li><li><code>UMBC</code></li><li><code>UniversalFeedParser</code></li><li><code>URL Control</code></li><li><code>URLGetFile</code></li><li><code>URLy Warning</code></li><li><code>URL_Spider_Pro</code></li><li><code>UtilMind</code></li><li><code>vayala</code></li><li><code>vobsub</code></li><li><code>VCI</code></li><li><code>VoidEYE</code></li><li><code>VoilaBot</code></li><li><code>voyager</code></li><li><code>w3mir</code></li><li><code>Web Image Collector</code></li><li><code>Web Sucker</code></li>
<li><code>Web2WAP</code></li><li><code>WebaltBot</code></li><li><code>WebAuto</code></li><li><code>WebBandit</code></li><li><code>WebCapture</code></li><li><code>webcollage</code></li><li><code>WebCopier</code></li><li><code>WebCopy</code></li><li><code>WebEMailExtrac</code></li><li><code>WebEnhancer</code></li><li><code>WebFetch</code></li><li><code>WebFilter</code></li><li><code>WebFountain</code></li><li><code>WebGo</code></li><li><code>WebLeacher</code></li><li><code>WebMiner</code></li><li><code>WebMirror</code></li><li><code>WebReaper</code></li><li><code>WebSauger</code></li><li><code>WebSnake</code></li><li><code>Website</code></li><li><code>WebStripper</code></li><li><code>WebVac</code></li><li><code>webwalk</code></li><li><code>WebWhacker</code></li><li><code>WebZIP</code></li><li><code>Wells Search</code></li><li><code>WEP Search 00</code></li><li><code>WeRelateBot</code></li><li><code>Wget</code></li><li><code>WhosTalking</code></li><li><code>Widow</code></li><li><code>Wildsoft Surfer</code></li><li><code>WinHttpRequest</code></li><li><code>WinHTTrack</code></li><li><code>WUMPUS</code></li><li><code>WWWOFFLE</code></li><li><code>wwwster</code></li><li><code>WWW-Collector</code></li><li><code>Xaldon</code></li><li><code>Xenu&#039;s</code></li><li><code>Xenus</code></li><li><code>XGET</code></li><li><code>Y!TunnelPro</code></li><li><code>YahooYSMcm</code></li><li><code>YaDirectBot</code></li><li><code>Yeti</code></li><li><code>Zade</code></li><li><code>ZBot</code></li><li><code>zerxbot</code></li><li><code>Zeus</code></li><li><code>ZyBorg</code></li>
</ol><p><a href="http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html"></a><a href="http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html">Blocking Bad Bots and Scrapers with .htaccess</a> originally appeared on <cite>AskApache.com</cite> </p>]]></content:encoded>
			<wfw:commentRss>http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Updated robots.txt for WordPress</title>
		<link>http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html</link>
		<comments>http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html#comments</comments>
		<pubDate>Sun, 16 Mar 2008 02:35:37 +0000</pubDate>
		<dc:creator>AskApache</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html</guid>
		<description><![CDATA[<p><img class="IFL" src="http://uploads.askapache.com/2007/08/wordpress-robotstxt-seo-blo.png" alt="WordPress robots.txt SEO" /><strong>Implementing an effective <abbr title="Search Engine Optimized">SEO</abbr> robots.txt file for WordPress</strong> will help your blog to <em>rank higher</em> in Search Engines, <em>receive higher paying relevant Ads</em>, and <em>increase your blog traffic</em>.  Get a <dfn title="Googlebot, msnbot, Slurp">search robots</dfn> point of view... <em>Sweet!</em><br class="C" /></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html"></a><a href="http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html"><cite>AskApache.com</cite></a></p><p><img class="IFL" src="http://uploads.askapache.com/2007/08/wordpress-robotstxt-seo-blo.png" alt="WordPress robots.txt SEO" title="wordpress robotstxt seo blo seo" /><strong>Implementing an effective <abbr title="Search Engine Optimized">SEO</abbr> robots.txt file for WordPress</strong> will help your blog to <em>rank higher</em> in Search Engines, <em>receive higher paying relevant Ads</em>, and <em>increase your blog traffic</em>.  Using a robots.txt file gives you a <dfn title="Googlebot, msnbot, Slurp">search engine robots</dfn> point of view... <strong>Sweet</strong>!  Looking for the most updated robots.txt?  Just <a href="http://www.askapache.com/robots.txt">look at mine</a>, I don't slack.<br class="C" /></p>


<h2>WordPress robots.txt SEO</h2>
<p>Here are some robots.txt files used with WordPress on this blog.  For instance, I am disallowing /category/ in the robots.txt file below because askapache.com/category/htaccess/ is the same as askapache.com/htaccess/, and that would be duplicate content. <a href="http://www.askapache.com/htaccess/htaccess.html">Adding a 301 Redirect using mod_rewrite or RedirectMatch</a> can further protect myself from this duplicate content issue.</p>
<pre>User-agent: *
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content
Disallow: /tag
Disallow: /author
Disallow: /wget/
Disallow: /httpd/
Disallow: /i/
Disallow: /f/
Disallow: /t/
Disallow: /c/
Disallow: /j/
&nbsp;
User-agent: Mediapartners-Google
Allow: /
&nbsp;
User-agent: Adsbot-Google
Allow: /
&nbsp;
User-agent: Googlebot-Image
Allow: /
&nbsp;
User-agent: Googlebot-Mobile
Allow: /
&nbsp;
User-agent: ia_archiver-web.archive.org
Disallow: /
&nbsp;
Sitemap: http://www.askapache.com/sitemap.xml
&nbsp;
#               __                          __
#   ____ ______/ /______ _____  ____ ______/ /_  ___
#  / __ `/ ___/ //_/ __ `/ __ \/ __ `/ ___/ __ \/ _ \
# / /_/ (__  ) ,&lt; / /_/ / /_/ / /_/ / /__/ / / /  __/
# \__,_/____/_/|_|\__,_/ .___/\__,_/\___/_/ /_/\___/
#                   /_/
#</pre>
<hr />

<h4><a href="http://static.askapache.com/robots.txt">static.askapache.com/robots.txt</a></h4>
<pre>User-agent: *
Disallow:
Allow: /*
&nbsp;
User-agent: ia_archiver
Disallow: /
&nbsp;
User-agent: duggmirror
Disallow: /</pre>



<h2>Google Recommendations</h2>
<h3><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35769">Use robots.txt</a> - Webmaster Guidelines</h3>
<blockquote cite="http://www.google.com/support/webmasters/bin/answer.py?answer=35769"><p>Make use of the robots.txt file on your web server. This file tells crawlers which directories can or cannot be crawled. Make sure it's current for your site so that you don't accidentally block the Googlebot crawler.</p></blockquote>


<h3><a href="http://adsense.blogspot.com/2010/02/troubleshooting-tips-part-iib-ad.html">Troubleshooting tips part IIb: Ad relevance and targeting continued</a></h3>
<div class="post-body">
To follow up on our previous post about ad relevance and targeting, let's look at some other reasons why you may experience ad targeting issues on your site.

<p><strong>Have you blocked the AdSense crawler's access to your pages?</strong></p>
<p>The AdSense crawler is an automated program that scans your web pages and tracks content for indexing. Sometimes we don't crawl pages because the AdSense crawler doesn't have access to your pages, in which case we're unable to determine their content and show relevant ads. Here are a few specific instances when our crawler can't access a site:
If you use a <a href="https://www.google.com/adsense/support/bin/answer.py?answer=10532">robots.txt file</a> which regulates the crawler access to your page. In this case, you can grant the AdSense crawler access by adding these lines to the top of your robots.txt file:</p>
<pre>User-agent: Mediapartners-Google*
Disallow:</pre>




<h3><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=66359">Eliminate Duplicate Content</a></h3>
<blockquote cite="http://www.google.com/support/webmasters/bin/answer.py?answer=66359"><p><strong>Duplicate content</strong> generally refers to substantive blocks of content within or across domains that either completely match other content or are appreciably similar. Mostly, this is not deceptive in origin. Examples of non-malicious duplicate content could include:</p>
    <ul>
        <li>Discussion forums that can generate both regular and stripped-down pages targeted at mobile devices</li>
        <li>Store items shown or linked via multiple distinct URLs</li>
        <li>Printer-only versions of web pages</li>
    </ul>
    <p>However, in some cases, content is deliberately duplicated across domains in an attempt to manipulate search engine rankings or win more traffic. Deceptive practices like this can result in a poor user experience, when a visitor sees substantially the same content repeated within a set of search results.</p>
    <p>Google tries hard to index and show pages with distinct information. This filtering means, for instance, that if your site has a "regular" and "printer" version of each article, and neither of these is blocked in robots.txt or with a noindex meta tag, we'll choose one of them to list. In the rare cases in which Google perceives that duplicate content may be shown with intent to manipulate our rankings and deceive our users, we'll also make appropriate adjustments in the indexing and ranking of the sites involved. As a result, the ranking of the site may suffer, or the site might be removed entirely from the Google index, in which case it will no longer appear in search results.</p></blockquote>


<h3><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35303">Prevent page from being indexed</a></h3>
<blockquote cite="http://www.google.com/support/webmasters/bin/answer.py?answer=35303"><p>Pages you block in this way may still be added to the Google index if other sites link to them. As a result, the URL of the page and, potentially, other publicly available information can appear in Google search results. However, no content from your pages will be crawled, indexed, or displayed.</p>
    <p>To entirely prevent a page from being added to the Google index even if other sites link to it, use a noindex meta tag, and ensure that the page does not appear in robots.txt. When Googlebot crawls the page, it will recognize the noindex meta tag and drop the URL from the index.</p></blockquote>


<h3>Prevent content being indexed or remove content from Google's index?</h3>
<blockquote cite="http://www.google.com/support/webmasters/bin/answer.py?answer=35301">
	<p>You can instruct us not to include content from your site in our index or to remove content from your site that is currently in our index in the following ways:</p>
    <ul>
        <li><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35302">Remove your entire website</a> or <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35303">part of your website</a> using a robots.txt file.</li>
        <li><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=61050">Remove individual pages</a> of your website using a robots meta tag.</li>
        <li><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35306">Remove cached copies</a> of your pages using a robots meta tag.</li>
        <li><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35304">Remove snippets</a> that appear below your page's title in our search results and describe the content of your page.</li>
        <li><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35307">Remove outdated pages</a> by returning the proper server response.</li>
        <li><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35308">Remove images</a> from Google Image Search using a robots.txt file.</li>
        <li>Remove blog entries from Google Blog Search.</li>
        <li>Remove a feed from our user-agent Feedfetcher, which provides content to our feed readers.</li>
        <li><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35312">Remove transcoded versions of your pages</a> (pages we've reformatted for mobile browsers).</li>
    </ul>
</blockquote>



<h3>Google User-agents</h3>
<dl>
    <dt>Adsbot-Google</dt>
    <dd>crawls pages to measure AdWords landing page quality</dd>
    <dt>Googlebot</dt>
    <dd>crawl pages from googles web and news index</dd>
    <dt>Googlebot-Image</dt>
    <dd>crawls pages for the image index</dd>
    <dt>Googlebot-Mobile</dt>
    <dd>crawls pages for the mobile index</dd>
    <dt>Mediapartners-Google</dt>
    <dd>crawls pages to determine AdSense content</dd>
</dl>



<h2>Good Robots.txt Articles</h2>
<ol>
    <li><a href="http://www.google.com/support/webmasters/bin/topic.py?topic=8843">How Google Crawls My Site</a></li>
    <li>Using the robots.txt analysis tool</li>
    <li><a href="http://googleblog.blogspot.com/2007/01/controlling-how-search-engines-access.html">Controlling how search engines access and index your website</a></li>
    <li><a href="http://googleblog.blogspot.com/2007/02/robots-exclusion-protocol.html">Controlling Access with robots.txt</a></li>
    <li><a href="http://www.markwilson.co.uk/blog/2007/04/removing-duplicate-search-engine-content-using-robotstxt.htm">Removing duplicate search engine content using robots.txt</a> - Mark Wilson</li>
    <li><a href="http://www.twentysteps.com/revisiting-robotstxt/">Revisiting robots.txt</a> - Twenty Steps</li>
</ol>


<h2>Robots Meta Tags</h2>
<p><a href="http://googlewebmastercentral.blogspot.com/2007/03/using-robots-meta-tag.html">Using the robots meta tag</a></p>

<h3>Robots Meta Examples</h3>
<h4>Stop all robots from indexing a page on your site, but still follow the links on the page</h4>
<pre>&lt;meta name="robots" content="noindex,follow" /&gt;</pre>
<h4>Allow other robots to index the page on your site, preventing only Googles bots from indexing the page</h4>
<pre>&lt;meta name="googlebot" content="noindex,follow" /&gt;</pre>
<h4>Allow robots to index the page on your site but not to follow outgoing links</h4>
<pre>&lt;meta name="robots" content="nofollow" /&gt;</pre>




<h3>header.php Trick for Conditional Robots Meta</h3>
<h4>Add this to your header.php</h4>
<pre>&lt;?php if(is_single() || is_page() || is_category() || is_home()) { ?&gt;
  &lt;meta name="robots" content="all,noodp" /&gt;
&lt;?php } ?&gt;
&lt;?php if(is_archive()) { ?&gt;
  &lt;meta name="robots" content="noarchive,noodp" /&gt;
&lt;?php } ?&gt;
&lt;?php if(is_search() || is_404()) { ?&gt;
  &lt;meta name="robots" content="noindex,noarchive" /&gt;
&lt;?php } ?&gt;</pre>
<hr />






<p class="tlapost"><strong>Robots.txt footnote</strong>
Alexa, Compete, and Quantcast are all guilty of firewalling unknown friendly search engine agents at the front gate. These sites that monitor the Internet should be the most in the know that unfriendly agents cloak as humans and will come in no matter what. So the general rule of thumb is that robots.txt directives are only for the good agents anyway.</p>
<hr />







<h2>Robots.txt References</h2>
<ol>
    <li><a href="http://codex.wordpress.org/Search_Engine_Optimization_for_Wordpress#Robots.txt_Optimization">Robots.txt optimization</a></li>
    <li><a href="http://www.robotstxt.org/wc/robots.html">The Web Robots Pages</a></li>
    <li><a href="http://www.w3.org/TR/html4/appendix/notes.html#h-B.4">W3.org - Notes on helping search engines index your Web site</a></li>
    <li><a href="http://en.wikipedia.org/wiki/Robots.txt">Wikipedia robots.txt page</a></li>
    <li><a href="http://sitemaps.blogspot.com/2006/02/using-robotstxt-file.html">Inside Google Sitemaps: Using a robots.txt file</a></li>
</ol>
<a href="http://technorati.com/tag/wordpress+robots.txt" rel="tag"><img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=wordpress+robots.txt" alt=" " title="icon utag 16x13.png?tag=wordpress+robots seo" />wordpress robots.txt</a><p><a href="http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html"></a><a href="http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html">Updated robots.txt for WordPress</a> originally appeared on <cite>AskApache.com</cite> </p>]]></content:encoded>
			<wfw:commentRss>http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html/feed</wfw:commentRss>
		<slash:comments>52</slash:comments>
		</item>
		<item>
		<title>PHP5 Custom Install Shell Script Example</title>
		<link>http://www.askapache.com/shellscript/php5-custom-install.html</link>
		<comments>http://www.askapache.com/shellscript/php5-custom-install.html#comments</comments>
		<pubDate>Mon, 17 Dec 2007 04:11:31 +0000</pubDate>
		<dc:creator>AskApache</dc:creator>
				<category><![CDATA[Shell Scripting]]></category>

		<guid isPermaLink="false">http://www.askapache.com/dreamhost/php5-custom-install.html</guid>
		<description><![CDATA[<p>Today I successfully learned how to <strong>compile and run multiple custom php</strong> installations for a DreamHost account, and to get it working I came upon a simple shell script that I made a couple changes to.</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.askapache.com/shellscript/php5-custom-install.html"></a><a href="http://www.askapache.com/shellscript/php5-custom-install.html"><cite>AskApache.com</cite></a></p><p>Today I successfully learned how to <strong>compile and run multiple custom php</strong> installations for a DreamHost account, and to get it working I came upon a simple shell script that I made a couple changes to.</p>

<p>This script downloads the correct files, php extensions, and source code that you will need to get a custom php5 environment set up on DH.  Its a rather dangerous file though if you don't know what you are doing, because compiling your own custom php-cgi for your web sites isn't exactly a common thing.  This file will delete a couple of your directories if you aren't careful, I just posted it here because I enjoyed hacking this out and this is a pretty cool example of some of the <a href="http://static.askapache.com/shell-scripts/bash/">things you can do with the unix shell</a>.</p>

<p class="tlapost">Its fun to rotate between languages like that, although shell programming isn't exactly the most exciting thing compared to python, ruby, and other great <em>Object->Oriented</em> languages taking over.  But they do all run in the shell :)</p>


<blockquote cite="http://wiki.dreamhost.com/PHP_5_install_script">These are alternative PHP 5 install scripts created by Charles Wiltgen, who created them to work around problems he was having with the "main" PHP 5 install script.</blockquote>

<p>Discussed in more detail on the <a href="http://wiki.dreamhost.com/PHP_5_install_script">DreamHost Customer Wiki</a>.</p>


<h2>Functions in Shell Scripts</h2>
<p>Two changes I made were adding some <strong>functionality</strong> to the code with these two tiny gunctions, one downloads compressed files, the other decompresses them.</p>
<pre>function aa_unpack () {
  # compressed, tar and gzip files to DISTDIR
  if [ -f $DISTDIR/$1* ] ; then
    echo Extracting "$1";
    zcat ${DISTDIR}/$1* | tar -xvf - &amp;&gt;/dev/null;
    echo Done.;  echo; wait
  fi
}
&nbsp;
function askapache_grab () {
  #saves file to SRCDIR
    echo `basename $1`
  curl -L --retry 20 --max-time 1800 --retry-delay 30 -# -f --max-redirs 4 --remote-name "$1"
}</pre>




<h3>php5-install-prep.sh - Source Code</h3>
<pre>#!/bin/sh
&nbsp;
# Version 0.6, 2007-12-16
#
# - Updated 2007-12-16 by AskApache (www.askapache.com)
#   - Implemented functions to fetch the URI and decompress it
#   - Added a couple more error-checks
#   - Replaced wget with cURL
#   - Added more to help keep it from getting killed
#  - Updated to php-5.2.3, curl-7.17.1, freetype-2.3.5
# - Updated 2007-01-15 by Charles Wiltgen (charles@wiltgen.net)
#   - Make "nicer" to help keep it from getting killed by DreamHost
#   - Make less verbose to keep signal-to-noise level high
# - Updated 2006-12-25 by Carl McDade (hiveminds.co.uk)
#   - Allow memory limit and freetype
&nbsp;
# Abort on any errors
set -e
&nbsp;
# The domain in which to install the PHP CGI script.
export DOMAIN="askapache.com"
&nbsp;
# Where do you want all this stuff built? I&#039;d recommend picking a local filesystem.
# ***Don&#039;t pick a directory that already exists!***
SRCDIR=${HOME}/source
&nbsp;
# And where should it be installed?
INSTALLDIR=${HOME}/php5
&nbsp;
# Set DISTDIR to somewhere persistent, if you plan to muck around with this
# script and run it several times!
DISTDIR=${HOME}/dist
&nbsp;
# Update version information here.
PHP5="php-5.2.3"
LIBICONV="libiconv-1.11"
LIBMCRYPT="libmcrypt-2.5.7"
LIBXML2="libxml2-2.6.27"
LIBXSLT="libxslt-1.1.18"
MHASH="mhash-0.9.7.1"
ZLIB="zlib-1.2.3"
CURL="curl-7.17.1"
LIBIDN="libidn-0.6.8"
CCLIENT="imap-2004g"
CCLIENT_DIR="imap-2004g"
FREETYPE="freetype-2.3.5"
&nbsp;
# Push the install dir&#039;s bin directory into the path
export PATH=${INSTALLDIR}/bin:$PATH
&nbsp;
function aa_unpack () {
  # compressed, tar and gzip files to DISTDIR
  if [ -f $DISTDIR/$1* ] ; then
    echo Extracting "$1";
    zcat ${DISTDIR}/$1* | tar -xvf - &amp;&gt;/dev/null;
    echo Done.;  echo; wait
  fi
}
&nbsp;
function askapache_grab () {
  #saves file to SRCDIR
    echo `basename $1`
  curl -L --retry 20 --max-time 1800 --retry-delay 30 -# -f --max-redirs 4 --remote-name "$1"
}
&nbsp;
echo
echo --------------------------------------------------
echo --   Run this script before php5-install.sh     --
echo --------------------------------------------------
echo
echo - Downloads and unpacks all prerequisite packages
echo - **SRCDIR and DISTDIR will be deleted**
echo
read -p  "        (Press any key to continue)" temp;
echo;echo
&nbsp;
# cleanup to remove source and dist directories if present
if [ -d "$SRCDIR" ] || [ -d "$DISTDIR" ];then
  echo
  echo --- Cleaning up any previous attempts ---
  rm -rf $SRCDIR $DISTDIR &amp;&gt;/dev/null
  echo Done.
  echo
  wait
fi
&nbsp;
#setup directories
mkdir -p ${SRCDIR} ${INSTALLDIR} ${DISTDIR} &amp;&gt;/dev/null
&nbsp;
# Get all the required packages
echo;echo
echo --- Downloading all required packages ---
echo
&nbsp;
cd ${DISTDIR}
askapache_grab http://us.php.net/distributions/${PHP5}.tar.gz
askapache_grab http://mirrors.usc.edu/pub/gnu/libiconv/${LIBICONV}.tar.gz
askapache_grab http://umn.dl.sourceforge.net/sourceforge/mcrypt/${LIBMCRYPT}.tar.gz
askapache_grab ftp://xmlsoft.org/libxml2/${LIBXML2}.tar.gz
askapache_grab ftp://xmlsoft.org/libxml2/${LIBXSLT}.tar.gz
askapache_grab http://umn.dl.sourceforge.net/sourceforge/mhash/${MHASH}.tar.gz
askapache_grab http://www.zlib.net/${ZLIB}.tar.gz
askapache_grab http://curl.askapache.com/download/${CURL}.tar.gz
askapache_grab http://easynews.dl.sourceforge.net/sourceforge/freetype/${FREETYPE}.tar.gz
askapache_grab ftp://alpha.gnu.org/pub/gnu/libidn/${LIBIDN}.tar.gz
askapache_grab ftp://ftp.cac.washington.edu/imap/old/${CCLIENT}.tar.Z
wait
echo Done.
&nbsp;
# Extract the files from the required packages.
echo;echo;echo
echo --- Unpacking downloaded archives. This process may take several minutes! ---
echo
&nbsp;
cd ${SRCDIR}
aa_unpack ${PHP5}
aa_unpack ${LIBICONV}
aa_unpack ${LIBMCRYPT}
aa_unpack ${LIBXML2}
aa_unpack ${LIBXSLT}
aa_unpack ${MHASH}
aa_unpack ${ZLIB}
aa_unpack ${CURL}
aa_unpack ${LIBIDN}
aa_unpack ${CCLIENT}
aa_unpack ${FREETYPE}
wait
&nbsp;
echo --------------------------------------------------
echo -- Done downloading and unpacking prerequisites --
echo --------------------------------------------------
&nbsp;
exit 0;</pre>



<h3>php5-install-prep.sh - Output</h3>
<pre>[root@~/.^*][~/dm/e]
$ ./php5-install-prep.sh
&nbsp;
--------------------------------------------------
-- Run this script before php5-install.sh --
--------------------------------------------------
&nbsp;
- Downloads and unpacks all prerequisite packages
- **SRCDIR and DISTDIR will be deleted**
&nbsp;
        (Press any key to continue)
&nbsp;
--- Cleaning up any previous attempts ---
Done.
&nbsp;
--- Downloading all required packages ---
&nbsp;
php-5.2.3.tar.gz
######################################################################## 100.0%
libiconv-1.11.tar.gz
######################################################################## 100.0%
libmcrypt-2.5.7.tar.gz
######################################################################## 100.0%
libxml2-2.6.27.tar.gz
######################################################################## 100.0%
libxslt-1.1.18.tar.gz
######################################################################## 100.0%
mhash-0.9.7.1.tar.gz
######################################################################## 100.0%
zlib-1.2.3.tar.gz
######################################################################## 100.0%
curl-7.17.1.tar.gz
######################################################################## 100.0%
freetype-2.3.5.tar.gz
######################################################################## 100.0%
libidn-0.6.8.tar.gz
######################################################################## 100.0%
imap-2004g.tar.Z
######################################################################## 100.0%
Done.
&nbsp;
--- Unpacking downloaded archives. This process may take several minutes! ---
&nbsp;
Extracting php-5.2.3
Done.
&nbsp;
Extracting libiconv-1.11
Done.
&nbsp;
Extracting libmcrypt-2.5.7
Done.
&nbsp;
Extracting libxml2-2.6.27
Done.
&nbsp;
Extracting libxslt-1.1.18
Done.
&nbsp;
Extracting mhash-0.9.7.1
Done.
&nbsp;
Extracting zlib-1.2.3
Done.
&nbsp;
Extracting curl-7.17.1
Done.
&nbsp;
Extracting libidn-0.6.8
Done.
&nbsp;
Extracting imap-2004g
Done.
&nbsp;
Extracting freetype-2.3.5
Done.
&nbsp;
--------------------------------------------------
-- Done downloading and unpacking prerequisites --
--------------------------------------------------</pre><p><a href="http://www.askapache.com/shellscript/php5-custom-install.html"></a><a href="http://www.askapache.com/shellscript/php5-custom-install.html">PHP5 Custom Install Shell Script Example</a> originally appeared on <cite>AskApache.com</cite> </p>]]></content:encoded>
			<wfw:commentRss>http://www.askapache.com/shellscript/php5-custom-install.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SEO with Robots.txt</title>
		<link>http://www.askapache.com/seo/seo-with-robotstxt.html</link>
		<comments>http://www.askapache.com/seo/seo-with-robotstxt.html#comments</comments>
		<pubDate>Sat, 20 Oct 2007 16:59:38 +0000</pubDate>
		<dc:creator>AskApache</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.askapache.com.com/seo/seo-with-robotstxt.html</guid>
		<description><![CDATA[Very nice tutorial dealing with the robots.txt file.  Shows examples for google and other search engines.  Wordpress robots.txt and phpBB robots.txt sample files.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.askapache.com/seo/seo-with-robotstxt.html"></a><a href="http://www.askapache.com/seo/seo-with-robotstxt.html"><cite>AskApache.com</cite></a></p><p><strong>robots.txt</strong> Search Engine Optimization is simply using robots.txt for your blog, wordpress, or phpbb. <a href="http://www.askapache.com/seo/wordpress-robotstxt-optimized-for-seo.html">WordPress Optimized robots.txt and meta tags</a></p>
<hr />
<p class="anote">See the <a href="http://www.askapache.com/seo/updated-robotstxt-for-wordpress.html">Updated WordPress robots.txt file</a></p>
<ul class="TOCC">
    <li><a href="http://www.askapache.com/seo/seo-with-robotstxt.html#google-robots-txt-recommendations" title="Google Robots.txt Recommendations">Google Robots.txt Info and Recommendations</a>
        <ul>
            <li><a href="http://www.askapache.com/seo/seo-with-robotstxt.html#googlebot-robots-txt" title="Googlebot and Robots.txt SEO Info">Googlebot and Robots.txt SEO Info</a></li>
            <li><a href="http://www.askapache.com/seo/seo-with-robotstxt.html#google-user-agents" title="Google User-agents">Google User-agents</a></li>
            <li><a href="http://www.askapache.com/seo/seo-with-robotstxt.html#removing-content-from-google" title="Removing Old/wrong content from google">Removing Old/wrong content from google</a></li>
            <li><a href="http://www.askapache.com/seo/seo-with-robotstxt.html#google-robots-txt-articles" title="Google Robots.txt Articles">Google Robots.txt Articles</a></li>
        </ul>
    </li>
    <li><a href="http://www.askapache.com/seo/seo-with-robotstxt.html#robots-txt-examples">Example Robots.txt files</a>
        <ul>
            <li><a href="http://www.askapache.com/seo/seo-with-robotstxt.html#robots-txt-file-for-wordpress" title="robots.txt for WordPress">robots.txt for WordPress</a></li>
            <li><a href="http://www.askapache.com/seo/seo-with-robotstxt.html#robots-txt-file-for-phpbb" title="robots.txt for phpBB">robots.txt for phpBB</a></li>
        </ul>
    </li>
</ul>


<h2><a name="google-robots-txt-recommendations" id="google-robots-txt-recommendations" title="Google Robots.txt Recommendations">Google Robots.txt Info and Recommendations</a></h2>
<blockquote cite="http://www.google.com/support/webmasters/bin/answer.py?answer=35769">
    <p>Make use of the robots.txt file on your web server. This file tells crawlers which directories can or cannot be crawled. Make sure it's current for your site so that you don't accidentally block the Googlebot crawler.</p>
</blockquote>


<h3><a name="googlebot-robots-txt" id="googlebot-robots-txt" title="Googlebot and Robots.txt SEO Info">Googlebot and Robots.txt SEO Info</a></h3>
<p>When deciding which pages to crawl, Googlebot goes in this order</p>
<ol>
    <li>Googlebot will obey the first record in the robots.txt file with a User-agent starting with "Googlebot."</li>
    <li>If no "Googlebot User-agent exists, it will obey the first entry with a User-agent of "*"</li>
</ol>


<h3><a name="google-user-agents" id="google-user-agents">Google User-agents</a></h3>
<dl>
    <dt><a name="googlebot" id="googlebot">Googlebot</a></dt>
    <dd>crawl pages from our web index and our news index</dd>
    <dt><a name="googlebot-mobile" id="googlebot-mobile">Googlebot-Mobile</a></dt>
    <dd>crawls pages for our mobile index</dd>
    <dt><a name="googlebot-image" id="googlebot-image">Googlebot-Image</a></dt>
    <dd>crawls pages for our image index</dd>
    <dt><a name="mediapartners-google" id="mediapartners-google">Mediapartners-Google</a></dt>
    <dd>crawls pages to determine AdSense content. We only use this bot to crawl your site if you show AdSense ads on your site.</dd>
    <dt><a name="adsbot-google" id="adsbot-google">Adsbot-Google</a></dt>
    <dd>crawls pages to measure AdWords landing page quality. We only use this bot if you use Google AdWords to advertise your site. Find out more about this bot and how to block it from portions of your site.</dd>
</dl>


<h3><a name="removing-content-from-google" id="removing-content-from-google" title="Removing Old/wrong content from google">Removing Old/wrong content from google</a></h3>
<ol>
    <li>Create the new page</li>
    <li>In .htaccess (if Linux) add a RedirectPermanent command</li>
    <li>DO NOT DELETE THE OLD FILE</li>
    <li>Update all the links on your website to point to the new page    (change the link text while you're at it)</li>
    <li>Verify that no pages point to the old file (including your sitemap.xml)</li>
    <li>Add a noindex,nofollow to the old file AND Disallow in your robots.txt</li>
    <li>Submit your updated sitemap.xml to Google & Yahoo</li>
    <li>Wait a few weeks</li>
    <li>When the new page appears in Google, it's safe to delete the old one</li>
</ol>


<h3><a name="google-robots-txt-articles" id="google-robots-txt-articles" title="Google Robots.txt Articles">Google Sponsored Robots.txt Articles</a></h3>
<ol>
    <li><a href="http://googleblog.blogspot.com/2007/01/controlling-how-search-engines-access.html" title="1/26/2007, Dan Crow">Controlling how search engines access and index your website</a></li>
    <li><a href="http://googleblog.blogspot.com/2007/02/robots-exclusion-protocol.html" title="2/22/2007, Dan Crow">The Robots Exclusion Protocol</a></li>
    <li><a href="http://sitemaps.blogspot.com/2006/02/analyzing-robotstxt-file.html">robots.txt analysis tool</a></li>
    <li><a href="http://www.google.com/webmasters/bot.html">Googlebot</a></li>
    <li><a href="http://sitemaps.blogspot.com/2006/02/using-robotstxt-file.html">Inside Google Sitemaps: Using a robots.txt file</a></li>
    <li><a href="http://googlewebmastercentral.blogspot.com/2006/08/all-about-googlebot.html">All About Googlebot</a></li>
</ol>


<h2><a name="robots-txt-examples" id="robots-txt-examples">robots.txt examples</a></h2>


<h3><a name="robots-txt-file-for-wordpress" id="robots-txt-file-for-wordpress" title="robots.txt for WordPress">robots.txt for WordPress 2.+</a></h3>

<pre>User-agent:  *
# disallow all files in these directories
Disallow: /cgi-bin/
Disallow: /z/j/
Disallow: /z/c/
Disallow: /stats/
Disallow: /dh_
Disallow: /about/
Disallow: /contact/
Disallow: /tag/
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /contact
Disallow: /manual
Disallow: /manual/*
Disallow: /phpmanual/
Disallow: /category/
&nbsp;
User-agent: Googlebot
# disallow all files ending with these extensions
Disallow: /*.php$
Disallow: /*.js$
Disallow: /*.inc$
Disallow: /*.css$
Disallow: /*.gz$
Disallow: /*.wmv$
Disallow: /*.cgi$
Disallow: /*.xhtml$
&nbsp;
# disallow all files with ? in url
Disallow: /*?*
&nbsp;
# disable duggmirror
User-agent: duggmirror
Disallow: /
&nbsp;
# allow google image bot to search all images
User-agent: Googlebot-Image
Disallow:
Allow: /*
&nbsp;
# allow adsense bot on entire site
User-agent: Mediapartners-Google*
Disallow:
Allow: /*</pre>



<h3><a name="robots-txt-file-for-phpbb" id="robots-txt-file-for-phpbb" title="robots.txt for phpBB">robots.txt for phpBB</a></h3>

<pre>User-agent: *
Disallow: /cgi-bin/
Disallow: /phpbb/admin/
Disallow: /phpbb/cache/
Disallow: /phpbb/db/
Disallow: /phpbb/images/
Disallow: /phpbb/includes/
Disallow: /phpbb/language/
Disallow: /phpbb/templates/
Disallow: /phpbb/faq.php
Disallow: /phpbb/groupcp.php
Disallow: /phpbb/login.php
Disallow: /phpbb/memberlist.php
Disallow: /phpbb/modcp.php
Disallow: /phpbb/posting.php
Disallow: /phpbb/privmsg.php
Disallow: /phpbb/profile.php
Disallow: /phpbb/search.php
Disallow: /phpbb/viewonline.php
&nbsp;
User-agent: Googlebot
# disallow files ending with these extensions
Disallow: /*.inc$
Disallow: /*.js$
Disallow: /*.inc$
Disallow: /*.css$
&nbsp;
# disallow all files with? in url
Disallow: *mark=*
Disallow: *view=*
&nbsp;
# allow google image bot to search all images
User-agent: Googlebot-Image
Disallow:
Allow: /*
&nbsp;
# allow adsense bot on entire site
User-agent: Mediapartners-Google*
Disallow:
Allow: /*</pre>



<pre>User-agent: *
Disallow: /stats
Disallow: /dh_
Disallow: /V
Disallow: /z/j/
Disallow: /z/c/
Disallow: /cgi-bin/
Disallow: /viewtopic.php
Disallow: /viewforum.php
Disallow: /index.php?
Disallow: /posting.php
Disallow: /groupcp.php
Disallow: /search.php
Disallow: /login.php
Disallow: /post
Disallow: /member
Disallow: /profile.php
Disallow: /memberlist.php
Disallow: /faq.php
Disallow: /templates/
Disallow: /mx_
Disallow: /db/
Disallow: /admin/
Disallow: /cache/
Disallow: /images/
Disallow: /includes/
Disallow: /common.php
Disallow: /index.php
Disallow: /memberlist.php
Disallow: /modcp.php
Disallow: /privmsg.php
Disallow: /viewonline.php
Disallow: /images/
Disallow: /rss.php
&nbsp;
User-agent: Googlebot
# disallow all files ending with these extensions
Allow: /sitemap.php
Disallow: /*.php$
Allow: /sitemap.php
Disallow: /*.js$
Disallow: /*.inc$
Disallow: /*.css$
Disallow: /*.txt$
&nbsp;
# disallow all files with? in url
Disallow: /*?*
Disallow: /*?
&nbsp;
# disallow all files in /wp- directorys
Disallow: /wp-*/
&nbsp;
# disallow archiving site
User-agent: ia_archiver
Disallow: /
&nbsp;
# allow google image bot to search all images
User-agent: Googlebot-Image
Disallow:
Allow: /*.gif$
Allow: /*.png$
Allow: /*.jpeg$
Allow: /*.jpg$
Allow: /*.ico$
Allow: /*.jpg$
Allow: /images
Allow: /z/i/
&nbsp;
# allow adsense bot on entire site
User-agent: Mediapartners-Google*
Allow: /*</pre>



<h2>Pattern Matching with Google</h2>


<h3>Matching a sequence of characters using <code>*</code></h3>
<p>You can use an asterisk <code>*</code> to match a sequence of characters.</p>


<h4>Block access to all subdirectories that begin with <code>private:</code></h4>

<pre>User-Agent: Googlebot
Disallow: /private*/</pre>



<h4>Block access to all URLs that include a <code>?</code></h4>

<pre>User-agent: *
Disallow: /*?*</pre>



<h3>Matching the end characters of the URL using <code>$</code></h3>
<p>You can use the <code>$</code> character to specify matching the end of the URL.</p>


<h4>Block any URLs that end with <code>.php</code></h4>

<pre>User-Agent: Googlebot
Disallow: /*.php$</pre>

<h5>You can use this pattern matching in combination with the Allow directive.</h5>


<h4>Exclude all URLs that contain ? to ensure Googlebot doesn't crawl duplicate pages.  URLs that end with a ? DO get crawled</h4>

<pre>User-agent: *
Allow: /*?$
Disallow: /*?</pre>

<p><code>Disallow:/*?</code> blocks any URL that begins with HOST, followed by any string, followed by a <code>?</code>, followed by any string</p>
<p><code>Allow: /*?$</code> allows any URL that begins with HOST, followed by any string, followed by a <code>?</code>, with no characters after the <code>?</code></p>
<h6><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=40367&ctx=sibling" title="I don't want to list every file that I want to block. Can I use pattern matching?">SRC</a></h6>


<h2>User-Agent Discussion</h2>


<h3>Blocking a specific User-Agent</h3>
<p><strong>Note</strong>: Blocking Googlebot blocks all bots that begin with "Googlebot"</p>


<h4>Block Googlebot entirely</h4>

<pre>User-agent: Googlebot
Disallow: /</pre>



<h3>Allowing a specific User-Agent</h3>
<p><strong>Note</strong>: Googlebot follows the line directed at it, rather than the line directed at everyone.</p>


<h4>Block access to all bots other than "Googlebot"</h4>

<pre>User-agent: *
Disallow: /
&nbsp;
User-agent: Googlebot
Disallow:</pre>

<p>Googlebot recognizes an extension to the robots.txt standard called Allow, which is opposite of Disallow.</p>


<h4>Block all pages inside a subdirectory except for single file</h4>

<pre>User-Agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html</pre>



<h4>Block Googlebot but allow other Bot</h4>

<pre>User-agent: Googlebot
Disallow: /
&nbsp;
User-agent: Googlebot-Mobile
Allow:</pre>

<h6><a href="http://www.google.com/support/webmasters/bin/answer.py?answer=40364&topic=8846" title="How Do I Block Googlebot?">SRC</a></h6>


<h2><a name="removing-content-from-google" id="removing-content-from-google" title="SEO: Removing Content From Google">Removing Content From Google</a></h2>
<p>It is better to use <code>    &lt;meta name="Googlebot" content="Follow,NoIndex"&gt;
    </code> on pages that have been indexed if you wish google to drop them. This way it is much faster than blocked using robots.txt.</p>
<p><strong>Note</strong>: removing snippets also removes cached pages.</p>
<p>A snippet is a text excerpt that appears below a page's title in our search results and describes the content of the page.</p>


<h4>Prevent Google from displaying snippets for your page</h4>

<pre>&lt;meta NAME="GOOGLEBOT" CONTENT="NOSNIPPET"&gt;</pre>



<h3>Remove an outdated "dead" link</h3>
<p>Google updates its entire index automatically on a regular basis. When we crawl the web, we find new pages, discard dead links, and update links automatically. Links that are outdated now will most likely "fade out" of our index during our next crawl.</p>
<p><strong>Note</strong>: Please ensure that you return a true 404 error even if you choose to display a more user-friendly body of the HTML page for your visitors. It won't help to return a page that says "File Not Found" if the http headers still return a status code of 200, or normal.</p>


<h3>Remove cached pages</h3>
<p>Google automatically takes a "snapshot" of each page it crawls and archives it. This "cached" version allows a webpage to be retrieved for your end users if the original page is ever unavailable (due to temporary failure of the page's web server). The cached page appears to users exactly as it looked when Google last crawled it, and we display a message at the top of the page to indicate that it's a cached version. Users can access the cached version by choosing the "Cached" link on the search results page.</p>


<h4>Prevent all search engines from showing a "Cached" link for your site</h4>

<pre>&lt;meta name="robots" content="noarchive" /&gt;</pre>



<h4>Allow other search engines to show a "Cached" link, preventing only Google</h4>

<pre>&lt;meta name="googlebot" content="noarchive" /&gt;</pre>

<p><strong>Note</strong>: this tag only removes the "Cached" link for the page. Google will continue to index the page and display a snippet.</p>


<h2>Remove your entire website</h2>
<p>If you wish to exclude your entire website from Google's index</p>


<h4>Remove site from search engines and prevent all robots from crawling it in the future</h4>

<pre>User-agent: *
Disallow: /</pre>

<p><strong>Note</strong>: Please note that Googlebot does not interpret a 401/403 response ("Unauthorized"/"Forbidden") to a robots.txt fetch as a request not to crawl any pages on the site.</p>


<h4>To remove your site from Google only and prevent just Googlebot from crawling your site in the future</h4>

<pre>User-agent: Googlebot
Disallow: /</pre>



<h3>Allow Googlebot to index all http pages but no https pages</h3>
<p>Each port must have its own robots.txt file. In particular, if you serve content via both http and https, you'll need a separate robots.txt file for each of these protocols.</p>


<h4>For your http protocol (http://yourserver.com/robots.txt)</h4>

<pre>User-agent: *
Allow: /</pre>



<h4>For the https protocol (https://yourserver.com/robots.txt)</h4>

<pre>User-agent: *
Disallow: /</pre>



<h2>Remove part of your website</h2>


<h3>Option 1: Robots.txt</h3>


<h4>Remove all pages under a particular directory (for example, lems)</h4>

<pre>User-agent: Googlebot
Disallow: /lems</pre>



<h4>Remove all files of a specific file type (for example, .gif)</h4>

<pre>User-agent: Googlebot
Disallow: /*.gif$</pre>



<h4>To remove dynamically generated pages, you'd use this robots.txt entry</h4>

<pre>User-agent: Googlebot
Disallow: /*?</pre>



<h3>Option 2: Meta tags</h3>
<p>Another standard, which can be more convenient for page-by-page use, involves adding a META tag to an HTML page to tell robots not to index the page. This standard is described at http://www.robotstxt.org/wc/exclusion.html#meta.</p>


<h4>Prevent all robots from indexing a page on your site</h4>

<pre>&lt;meta name="robots" content="noindex, nofollow" /&gt;</pre>



<h4>Allow other robots to index the page on your site, preventing only Google's robots from indexing the page</h4>

<pre>&lt;meta name="googlebot" content="noindex, nofollow" /&gt;</pre>



<h4>Allow robots to index the page on your site but instruct them not to follow outgoing links</h4>

<pre>&lt;meta name="robots" content="nofollow" /&gt;</pre>



<h3>Remove an image from Google's Image Search</h3>


<h4>Want Google to exclude the dogs.jpg image that appears on your site at www.yoursite.com/images/dogs.jpg</h4>

<pre>User-agent: Googlebot-Image
Disallow: /images/dogs.jpg</pre>



<h4>Remove all the images on your site from our index</h4>

<pre>User-agent: Googlebot-Image
Disallow: /</pre>



<h4>Remove all files of a specific file type (for example, to include .jpg but not .gif images)</h4>

<pre>User-agent: Googlebot-Image
Disallow: /*.gif$</pre>

<p><strong>Note</strong>: If you believe your request is urgent and cannot wait until the next time Google crawls your site, use our automatic URL removal system. In order for this automated process to work, the webmaster or <a href="http://www.teknicks.com/" title="SEO agency">SEO agency</a> must first create and place a robots.txt file on the site in question.</p>
<p>Google will continue to exclude your site or directories from successive crawls if the robots.txt file exists in the web server root. If you do not have access to the root level of your server, you may place a robots.txt file at the same level as the files you want to remove. Doing this and submitting via the automatic URL removal system will cause a temporary, 180 day removal of the directories specified in your robots.txt file from the Google index, regardless of whether you remove the robots.txt file after processing your request. (Keeping the robots.txt file at the same level would require you to return to the URL removal system every 180 days to reissue the removal.)</p>


<h3>Remove a blog from Blog Search</h3>
<p>Only blogs with site feeds will be included in Blog Search. If you'd like to prevent your feed from being crawled, make use of a robots.txt file or meta tags (NOINDEX or NOFOLLOW), as described above. Please note that if you have a feed that was previously included, the old posts will remain in the index even though new ones will not be added.</p>


<h3>Remove a RSS or Atom feed</h3>
<p>When users add your feed to their Google homepage or Google Reader, Google's Feedfetcher attempts to obtain the content of the feed in order to display it. Since Feedfetcher requests come from explicit action by human users, Feedfetcher has been designed to ignore robots.txt guidelines.</p>
<p>It's not possible for Google to restrict access to a publicly available feed. If your feed is provided by a blog hosting service, you should work with them to restrict access to your feed. Check those sites' help content for more information (e.g., Blogger, LiveJournal, or Typepad).</p>


<h3>Remove transcoded pages</h3>
<p>Google Web Search on mobile phones allows users to search all the content in the Google index for desktop web browsers. Because this content isn't written specifically for mobile phones and devices and thus might not display properly, Google automatically translates (or "transcodes") these pages by analyzing the original HTML code and converting it to a mobile-ready format. To ensure that the highest quality and most useable web page is displayed on your mobile phone or device, Google may resize, adjust, or convert images, text formatting and/or certain aspects of web page functionality.</p>
<h6>SRC</h6>
<p>To save bandwidth, Googlebot only downloads the robots.txt file once a day or whenever we've fetched many pages from the server. So, it may take a while for Googlebot to learn of changes to your robots.txt file. Also, Googlebot is distributed on several machines. Each of these keeps its own record of your robots.txt file.</p>
<p>Also, there's a small difference between the way Googlebot handles the robots.txt file and the way the robots.txt standard says we should (keeping in mind the distinction between "should" and "must"). The standard says we should obey the first applicable rule, whereas Googlebot obeys the longest (that is, the most specific) applicable rule. This more intuitive practice matches what people actually do, and what they expect us to do.</p>


<h4>For example, consider the following robots.txt file:</h4>

<pre>User-Agent: *
Allow: /
Disallow: /cgi-bin</pre>

<p>It's obvious that the webmaster's intent here is to allow robots to crawl everything except the /cgi-bin directory. Consequently, that's what we do.</p>


<h3>Tell googlebot not to count certain external links in your ranking</h3>
<p>Meta tags can exclude all outgoing links on a page, but you can also instruct Googlebot not to crawl individual links by adding rel="nofollow" to a hyperlink. When Google sees the attribute rel="nofollow" on hyperlinks, those links won't get any credit when we rank websites in our search results. For example a link, <a href="http://www.example.com/">This is a great link!</a> could be replaced with <a href="http://www.example.com/" rel="nofollow">I can't vouch for this link</a>.</p>


<h2>Other Links</h2>
<ol>
    <li>Database of Web Robots, Overview</li>
</ol>
<hr class="HR0" />

<pre># robots.txt, www.nytimes.com 6/29/2006
User-agent: *
Disallow: /pages/college/
Disallow: /college/
Disallow: /library/
Disallow: /learning/
Disallow: /aponline/
Disallow: /reuters/
Disallow: /cnet/
Disallow: /partners/
Disallow: /archives/
Disallow: /indexes/
Disallow: /thestreet/
Disallow: /nytimes-partners/
Disallow: /financialtimes/
Allow: /pages/
Allow: /2003/
Allow: /2004/
Allow: /2005/
Allow: /top/
Allow: /ref/
Allow: /services/xml/
&nbsp;
User-agent: Mediapartners-Google*
Disallow:
&nbsp;
# robots.txt, http://dictionary.reference.com
User-agent: Googlebot
Disallow:
&nbsp;
User-agent: Mediapartners-Google
Disallow:
&nbsp;
User-agent: Teleport Pro
Disallow: /
&nbsp;
User-agent: *
Disallow: /cgi-bin/
&nbsp;
# robots.txt for www.phpbbhacks.com
User-agent: *
Disallow: /forums/viewtopic.php
Disallow: /forums/viewforum.php
Disallow: /forums/index.php?
Disallow: /forums/posting.php
Disallow: /forums/groupcp.php
Disallow: /forums/search.php
Disallow: /forums/login.php
Disallow: /forums/privmsg.php
Disallow: /forums/post
Disallow: /forums/profile.php
Disallow: /forums/memberlist.php
Disallow: /forums/faq.php
Disallow: /forums/archive
&nbsp;
# robots.txt for Slashdot.org
#
# "Any empty [Disallow] value, indicates that all URLs can be retrieved.
# At least one Disallow field needs to be present in a record."
&nbsp;
User-agent: Mediapartners-Google
Disallow:
&nbsp;
User-agent: Googlebot
Crawl-delay: 100
Disallow: /firehose.pl
Disallow: /submit.pl
Disallow: /comments.pl
Disallow: /users.pl
Disallow: /zoo.pl
Disallow: firehose.pl
Disallow: submit.pl
Disallow: comments.pl
Disallow: users.pl
Disallow: zoo.pl
Disallow: /~
Disallow: ~
&nbsp;
User-agent: Slurp
Crawl-delay: 100
Disallow:
&nbsp;
User-agent: Yahoo-NewsCrawler
Disallow:
&nbsp;
User-Agent: msnbot
Crawl-delay: 100
Disallow:
&nbsp;
User-agent: *
Crawl-delay: 100
Disallow: /authors.pl
Disallow: /index.pl
Disallow: /article.pl
Disallow: /comments.pl
Disallow: /firehose.pl
Disallow: /journal.pl
Disallow: /messages.pl
Disallow: /metamod.pl
Disallow: /users.pl
Disallow: /search.pl
Disallow: /submit.pl
Disallow: /pollBooth.pl
Disallow: /pubkey.pl
Disallow: /topics.pl
Disallow: /zoo.pl
Disallow: /palm
Disallow: authors.pl
Disallow: index.pl
Disallow: article.pl
Disallow: comments.pl
Disallow: firehose.pl
Disallow: journal.pl
Disallow: messages.pl
Disallow: metamod.pl
Disallow: users.pl
Disallow: search.pl
Disallow: submit.pl
Disallow: pollBooth.pl
Disallow: pubkey.pl
Disallow: topics.pl
Disallow: zoo.pl
Disallow: /~
Disallow: ~
&nbsp;
# robots.txt for http://www.myspace.com
User-agent: ia_archiver
Disallow: /
&nbsp;
# robots.txt for http://www.craigslist.com
User-agent: YahooFeedSeeker
Disallow: /forums
Disallow: /res/
Disallow: /post
Disallow: /email.friend
Disallow: /?flagCode
Disallow: /ccc
Disallow: /hhh
Disallow: /sss
Disallow: /bbb
Disallow: /ggg
Disallow: /jjj
&nbsp;
User-agent: *
Disallow: /cgi-bin
Disallow: /cgi-secure
Disallow: /forums
Disallow: /search
Disallow: /res/
Disallow: /post
Disallow: /email.friend
Disallow: /?flagCode
Disallow: /ccc
Disallow: /hhh
Disallow: /sss
Disallow: /bbb
Disallow: /ggg
Disallow: /jjj
&nbsp;
User-Agent: OmniExplorer_Bot
Disallow: /
&nbsp;
# robots.txt for http://www.alexa.com
User-agent: googlebot  # allow Google crawler
Disallow: /search
&nbsp;
User-agent: gulliver  # allow Northern Light crawler
Disallow: /search
&nbsp;
User-agent: slurp  # allow Inktomi crawler
Disallow: /search
&nbsp;
User-agent: fast  # allow FAST crawler
Disallow: /search
&nbsp;
User-agent: scooter  # allow AltaVista crawler
Disallow: /search
&nbsp;
User-agent: vscooter  # allow AltaVista image crawler
Disallow: /search
&nbsp;
User-agent: ia_archiver  # allow Internet Archive crawler
Disallow: /search
&nbsp;
User-agent: *    # Disallow all other crawlers access
Disallow: /
&nbsp;
# robots.txt for http://www.technorati.com
User-agent: NPBot
Disallow: /
&nbsp;
User-agent: TurnitinBot
Disallow: /
&nbsp;
User-Agent: sitecheck.internetseer.com
Disallow: /
&nbsp;
User-Agent: *
Crawl-Delay: 3
Disallow: /search/
Disallow: /search.php
Disallow: /cosmos.php
&nbsp;
# robots.txt for www.sitepoint.com
User-agent: *
Disallow: /cgi-bin/
Disallow: /images/
Disallow: /forums/report.php
Disallow: /forums/search.php
Disallow: /forums/newreply.php
Disallow: /forums/editpost.php
Disallow: /forums/memberlist.php
Disallow: /forums/profile.php
Disallow: /launch/
Disallow: /search/
Disallow: /voucher/424/
Disallow: /email/
Disallow: /feedback/
Disallow: /contact?reason=articlesuggest
Disallow: /linktothis/
Disallow: /popup/
Disallow: /forums/archive/
&nbsp;
# robots.txt for http://www.w3.org/
&nbsp;
# For use by search.w3.org
User-agent: W3C-gsa
Disallow: /Out-Of-Date
&nbsp;
User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT; MS Search 4.0 Robot)
Disallow: /
&nbsp;
# W3C Link checker
User-agent: W3C-checklink
Disallow:
&nbsp;
# exclude some access-controlled areas
User-agent: *
Disallow: /2004/ontaria/basic
Disallow: /Team
Disallow: /Project
Disallow: /Systems
Disallow: /Web
Disallow: /History
Disallow: /Out-Of-Date
Disallow: /2002/02/mid
Disallow: /mid/
Disallow: /People/all/
Disallow: /RDF/Validator/ARPServlet
Disallow: /2003/03/Translations/byLanguage
Disallow: /2003/03/Translations/byTechnology
Disallow: /2005/11/Translations/Query
Disallow: /2003/glossary/subglossary/
#Disallow: /2005/06/blog/
#Disallow: /2001/07/pubrules-checker
#shouldnt get transparent proxies but will ml links of things like pubrules
Disallow: /2000/06/webdata/xslt
Disallow: /2000/09/webdata/xslt
Disallow: /2005/08/online_xslt/xslt
Disallow: /Bugs/
Disallow: /Search/Mail/Public/
Disallow: /2006/02/chartergen
&nbsp;
# robots.txt for www.google-analytics.com
User-Agent: *
Disallow: /
Noindex: /
&nbsp;
# robots.txt for video.google.com
User-agent: *
Disallow: /videosearch?
Disallow: /videofeed?
Disallow: /videopreview?
Disallow: /videopreviewbig?
Disallow: /videoprograminfo?
Disallow: /videorandom
Disallow: /videolineup
Disallow: /downloadgvp
&nbsp;
# robots.txt for www.google.com
User-agent: *
Allow: /searchhistory/
Disallow: /news?output=xhtml&amp;
Allow: /news?output=xhtml
Disallow: /search
Disallow: /groups
Disallow: /images
Disallow: /catalogs
Disallow: /catalogues
Disallow: /news
Disallow: /nwshp
Disallow: /?
Disallow: /addurl/image?
Disallow: /pagead/
Disallow: /relpage/
Disallow: /relcontent
Disallow: /sorry/
Disallow: /imgres
Disallow: /keyword/
Disallow: /u/
Disallow: /univ/
Disallow: /cobrand
Disallow: /custom
Disallow: /advanced_group_search
Disallow: /advanced_search
Disallow: /googlesite
Disallow: /preferences
Disallow: /setprefs
Disallow: /swr
Disallow: /url
Disallow: /m?
Disallow: /m/search?
Disallow: /wml?
Disallow: /wml/search?
Disallow: /xhtml?
Disallow: /xhtml/search?
Disallow: /xml?
Disallow: /imode?
Disallow: /imode/search?
Disallow: /jsky?
Disallow: /jsky/search?
Disallow: /pda?
Disallow: /pda/search?
Disallow: /sprint_xhtml
Disallow: /sprint_wml
Disallow: /pqa
Disallow: /palm
Disallow: /gwt/
Disallow: /purchases
Disallow: /hws
Disallow: /bsd?
Disallow: /linux?
Disallow: /mac?
Disallow: /microsoft?
Disallow: /unclesam?
Disallow: /answers/search?q=
Disallow: /local?
Disallow: /local_url
Disallow: /froogle?
Disallow: /froogle_
Disallow: /print
Disallow: /books
Disallow: /patents?
Disallow: /scholar?
Disallow: /complete
Disallow: /sponsoredlinks
Disallow: /videosearch?
Disallow: /videopreview?
Disallow: /videoprograminfo?
Disallow: /maps?
Disallow: /translate?
Disallow: /ie?
Disallow: /sms/demo?
Disallow: /katrina?
Disallow: /blogsearch?
Disallow: /blogsearch/
Disallow: /blogsearch_feeds
Disallow: /advanced_blog_search
Disallow: /reader/
Disallow: /uds/
Disallow: /chart?
Disallow: /transit?
Disallow: /mbd?
Disallow: /extern_js/
Disallow: /calendar/feeds/
Disallow: /calendar/ical/
Disallow: /cl2/feeds/
Disallow: /cl2/ical/
Disallow: /coop/directory
Disallow: /coop/manage
Disallow: /trends?
Disallow: /trends/music?
Disallow: /notebook/search?
Disallow: /music
Disallow: /browsersync
Disallow: /call
Disallow: /archivesearch?
Disallow: /archivesearch/url
Disallow: /archivesearch/advanced_search
Disallow: /base/search?
Disallow: /base/reportbadoffer
Disallow: /base/s2
Disallow: /urchin_test/
Disallow: /movies?
Disallow: /codesearch?
Disallow: /codesearch/feeds/search?
Disallow: /wapsearch?
Disallow: /safebrowsing
Disallow: /finance
Disallow: /reviews/search?
&nbsp;
# robots.txt for validator.w3.org
# $Id: robots.txt,v 1.3 2000/12/13 13:04:09 gerald Exp $
&nbsp;
User-agent: *
Disallow: /check
&nbsp;
# robots.txt for httpd.apache.org
User-agent: *
Disallow: /websrc
&nbsp;
# robots.txt for www.apache.org
User-agent: *
Disallow: /websrc
Crawl-Delay: 4</pre>

<hr class="HR0" />

<pre>#  Please, we do NOT allow nonauthorized robots.
#  http://www.webmasterworld.com/robots
#  Actual robots can always be found here for: http://www.webmasterworld.com/robots2
#  Old full robots.txt can be found here: http://www.webmasterworld.com/robots3
#  Any unauthorized bot running will result in IP&#039;s being banned.
#  Agent spoofing is considered a bot.
#  Fair warning to the clueless - honey pots are - and have been - running.
#  If you have been banned for bot running - please sticky an admin for a reinclusion request.
#  http://www.searchengineworld.com/robots/
#  This code found here: http://www.webmasterworld.com/robots.txt?view=rawcode
&nbsp;
User-agent: *
Crawl-delay: 17
&nbsp;
User-agent: *
Disallow: /gfx/
Disallow: /cgi-bin/
Disallow: /QuickSand/
Disallow: /pda/
Disallow: /zForumFFFFFF/</pre>

<pre># WebmasterWorld.com: robots.txt
# GNU Robots.txt Feel free to use with credit
# given to WebmasterWorld.
# Please, we do NOT allow nonauthorized robots any longer.
# http://www.searchengineworld.com/robots/
# Yes, feel free to copy and use the following.
&nbsp;
User-agent: OmniExplorer_Bot
Disallow: /
&nbsp;
User-agent: FreeFind
Disallow: /
&nbsp;
User-agent: BecomeBot
Disallow: /
&nbsp;
User-agent: Nutch
Disallow: /
&nbsp;
User-agent: Jetbot/1.0
Disallow: /
&nbsp;
User-agent: Jetbot
Disallow: /
&nbsp;
User-agent: WebVac
Disallow: /
&nbsp;
User-agent: Stanford
Disallow: /
&nbsp;
User-agent: naver
Disallow: /
&nbsp;
User-agent: dumbot
Disallow: /
&nbsp;
User-agent: Hatena Antenna
Disallow: /
&nbsp;
User-agent: grub-client
Disallow: /
&nbsp;
User-agent: grub
Disallow: /
&nbsp;
User-agent: looksmart
Disallow: /
&nbsp;
User-agent: WebZip
Disallow: /
&nbsp;
User-agent: larbin
Disallow: /
&nbsp;
User-agent: b2w/0.1
Disallow: /
&nbsp;
User-agent: Copernic
Disallow: /
&nbsp;
User-agent: psbot
Disallow: /
&nbsp;
User-agent: Python-urllib
Disallow: /
&nbsp;
User-agent: Googlebot-Image
Disallow: /
&nbsp;
User-agent: NetMechanic
Disallow: /
&nbsp;
User-agent: URL_Spider_Pro
Disallow: /
&nbsp;
User-agent: CherryPicker
Disallow: /
&nbsp;
User-agent: EmailCollector
Disallow: /
&nbsp;
User-agent: EmailSiphon
Disallow: /
&nbsp;
User-agent: WebBandit
Disallow: /
&nbsp;
User-agent: EmailWolf
Disallow: /
&nbsp;
User-agent: ExtractorPro
Disallow: /
&nbsp;
User-agent: CopyRightCheck
Disallow: /
&nbsp;
User-agent: Crescent
Disallow: /
&nbsp;
User-agent: SiteSnagger
Disallow: /
&nbsp;
User-agent: ProWebWalker
Disallow: /
&nbsp;
User-agent: CheeseBot
Disallow: /
&nbsp;
User-agent: LNSpiderguy
Disallow: /
&nbsp;
User-agent: Mozilla
Disallow: /
&nbsp;
User-agent: mozilla
Disallow: /
&nbsp;
User-agent: mozilla/3
Disallow: /
&nbsp;
User-agent: mozilla/4
Disallow: /
&nbsp;
User-agent: mozilla/5
Disallow: /
&nbsp;
User-agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows NT)
Disallow: /
&nbsp;
User-agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)
Disallow: /
&nbsp;
User-agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows 98)
Disallow: /
&nbsp;
User-agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows XP)
Disallow: /
&nbsp;
User-agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows 2000)
Disallow: /
&nbsp;
User-agent: ia_archiver
Disallow: /
&nbsp;
User-agent: ia_archiver/1.6
Disallow: /
&nbsp;
User-agent: Alexibot
Disallow: /
&nbsp;
User-agent: Teleport
Disallow: /
&nbsp;
User-agent: TeleportPro
Disallow: /
&nbsp;
User-agent: Stanford Comp Sci
Disallow: /
&nbsp;
User-agent: MIIxpc
Disallow: /
&nbsp;
User-agent: Telesoft
Disallow: /
&nbsp;
User-agent: Website Quester
Disallow: /
&nbsp;
User-agent: moget/2.1
Disallow: /
&nbsp;
User-agent: WebZip/4.0
Disallow: /
&nbsp;
User-agent: WebStripper
Disallow: /
&nbsp;
User-agent: WebSauger
Disallow: /
&nbsp;
User-agent: WebCopier
Disallow: /
&nbsp;
User-agent: NetAnts
Disallow: /
&nbsp;
User-agent: Mister PiX
Disallow: /
&nbsp;
User-agent: WebAuto
Disallow: /
&nbsp;
User-agent: TheNomad
Disallow: /
&nbsp;
User-agent: WWW-Collector-E
Disallow: /
&nbsp;
User-agent: RMA
Disallow: /
&nbsp;
User-agent: libWeb/clsHTTP
Disallow: /
&nbsp;
User-agent: asterias
Disallow: /
&nbsp;
User-agent: httplib
Disallow: /
&nbsp;
User-agent: turingos
Disallow: /
&nbsp;
User-agent: spanner
Disallow: /
&nbsp;
User-agent: InfoNaviRobot
Disallow: /
&nbsp;
User-agent: Harvest/1.5
Disallow: /
&nbsp;
User-agent: Bullseye/1.0
Disallow: /
&nbsp;
User-agent: Mozilla/4.0 (compatible; BullsEye; Windows 95)
Disallow: /
&nbsp;
User-agent: Crescent Internet ToolPak HTTP OLE Control v.1.0
Disallow: /
&nbsp;
User-agent: CherryPickerSE/1.0
Disallow: /
&nbsp;
User-agent: CherryPickerElite/1.0
Disallow: /
&nbsp;
User-agent: WebBandit/3.50
Disallow: /
&nbsp;
User-agent: NICErsPRO
Disallow: /
&nbsp;
User-agent: Microsoft URL Control - 5.01.4511
Disallow: /
&nbsp;
User-agent: DittoSpyder
Disallow: /
&nbsp;
User-agent: Foobot
Disallow: /
&nbsp;
User-agent: WebmasterWorldForumBot
Disallow: /
&nbsp;
User-agent: SpankBot
Disallow: /
&nbsp;
User-agent: BotALot
Disallow: /
&nbsp;
User-agent: lwp-trivial/1.34
Disallow: /
&nbsp;
User-agent: lwp-trivial
Disallow: /
&nbsp;
User-agent: http://www.WebmasterWorld.com bot
Disallow: /
&nbsp;
User-agent: BunnySlippers
Disallow: /
&nbsp;
User-agent: Microsoft URL Control - 6.00.8169
Disallow: /
&nbsp;
User-agent: URLy Warning
Disallow: /
&nbsp;
User-agent: Wget/1.6
Disallow: /
&nbsp;
User-agent: Wget/1.5.3
Disallow: /
&nbsp;
User-agent: Wget
Disallow: /
&nbsp;
User-agent: LinkWalker
Disallow: /
&nbsp;
User-agent: cosmos
Disallow: /
&nbsp;
User-agent: moget
Disallow: /
&nbsp;
User-agent: hloader
Disallow: /
&nbsp;
User-agent: humanlinks
Disallow: /
&nbsp;
User-agent: LinkextractorPro
Disallow: /
&nbsp;
User-agent: Offline Explorer
Disallow: /
&nbsp;
User-agent: Mata Hari
Disallow: /
&nbsp;
User-agent: LexiBot
Disallow: /
&nbsp;
User-agent: Web Image Collector
Disallow: /
&nbsp;
User-agent: The Intraformant
Disallow: /
&nbsp;
User-agent: True_Robot/1.0
Disallow: /
&nbsp;
User-agent: True_Robot
Disallow: /
&nbsp;
User-agent: BlowFish/1.0
Disallow: /
&nbsp;
User-agent: http://www.SearchEngineWorld.com bot
Disallow: /
&nbsp;
User-agent: http://www.WebmasterWorld.com bot
Disallow: /
&nbsp;
User-agent: JennyBot
Disallow: /
&nbsp;
User-agent: MIIxpc/4.2
Disallow: /
&nbsp;
User-agent: BuiltBotTough
Disallow: /
&nbsp;
User-agent: ProPowerBot/2.14
Disallow: /
&nbsp;
User-agent: BackDoorBot/1.0
Disallow: /
&nbsp;
User-agent: toCrawl/UrlDispatcher
Disallow: /
&nbsp;
User-agent: WebEnhancer
Disallow: /
&nbsp;
User-agent: suzuran
Disallow: /
&nbsp;
User-agent: VCI WebViewer VCI WebViewer Win32
Disallow: /
&nbsp;
User-agent: VCI
Disallow: /
&nbsp;
User-agent: Szukacz/1.4
Disallow: /
&nbsp;
User-agent: QueryN Metasearch
Disallow: /
&nbsp;
User-agent: Openfind data gathere
Disallow: /
&nbsp;
User-agent: Openfind
Disallow: /
&nbsp;
User-agent: Xenu&#039;s Link Sleuth 1.1c
Disallow: /
&nbsp;
User-agent: Xenu&#039;s
Disallow: /
&nbsp;
User-agent: Zeus
Disallow: /
&nbsp;
User-agent: RepoMonkey Bait &amp; Tackle/v1.01
Disallow: /
&nbsp;
User-agent: RepoMonkey
Disallow: /
&nbsp;
User-agent: Microsoft URL Control
Disallow: /
&nbsp;
User-agent: Openbot
Disallow: /
&nbsp;
User-agent: URL Control
Disallow: /
&nbsp;
User-agent: Zeus Link Scout
Disallow: /
&nbsp;
User-agent: Zeus 32297 Webster Pro V2.9 Win32
Disallow: /
&nbsp;
User-agent: Webster Pro
Disallow: /
&nbsp;
User-agent: EroCrawler
Disallow: /
&nbsp;
User-agent: LinkScan/8.1a Unix
Disallow: /
&nbsp;
User-agent: Keyword Density/0.9
Disallow: /
&nbsp;
User-agent: Kenjin Spider
Disallow: /
&nbsp;
User-agent: Iron33/1.0.2
Disallow: /
&nbsp;
User-agent: Bookmark search tool
Disallow: /
&nbsp;
User-agent: GetRight/4.2
Disallow: /
&nbsp;
User-agent: FairAd Client
Disallow: /
&nbsp;
User-agent: Gaisbot
Disallow: /
&nbsp;
User-agent: Aqua_Products
Disallow: /
&nbsp;
User-agent: Radiation Retriever 1.1
Disallow: /
&nbsp;
User-agent: WebmasterWorld Extractor
Disallow: /
&nbsp;
User-agent: Flaming AttackBot
Disallow: /
&nbsp;
User-agent: Oracle Ultra Search
Disallow: /
&nbsp;
User-agent: MSIECrawler
Disallow: /
&nbsp;
User-agent: PerMan
Disallow: /
&nbsp;
User-agent: searchpreview
Disallow: /
&nbsp;
User-agent: sootle
Disallow: /
&nbsp;
User-agent: es
Disallow: /
&nbsp;
User-agent: Enterprise_Search/1.0
Disallow: /
&nbsp;
User-agent: Enterprise_Search
Disallow: /
&nbsp;
User-agent: *
Disallow: /gfx/
Disallow: /cgi-bin/
Disallow: /QuickSand/
Disallow: /pda/
Disallow: /zForumFFFFFF/</pre>

<hr class="HR0" />
<p>You don't have to block your feeds from indexing. Matt Cutts himself
    suggested not to block those because there is not real reason to doing
    so. If you are talking about a blog and its /feed and such urls it
    won't cause mess in your rankings, so my suggesting would be not touch
    those feeds.</p>
<p>As for blocking, no you won't have any affection to your main url if
    you block /feed or whatever urls you want. Gbot will just deindex them
    and stop crawling them.</p>


<h2>Wget Robot Exclusion</h2>
<p>It is extremely easy to make Wget wander aimlessly around a web site, sucking all the available data in progress. `wget -r site', and you're set. Great? Not for the server admin.</p>

<p>As long as Wget is only retrieving static pages, and doing it at a reasonable rate (see the `--wait' option), there's not much of a problem. The trouble is that Wget can't tell the difference between the smallest static page and the most demanding CGI. A site I know has a section handled by an, uh, bitchin' CGI Perl script that converts Info files to HTML on the fly. The script is slow, but works well enough for human users viewing an occasional Info file. However, when someone's recursive Wget download stumbles upon the index page that links to all the Info files through the script, the system is brought to its knees without providing anything useful to the downloader.</p>

<p>To avoid this kind of accident, as well as to preserve privacy for documents that need to be protected from well-behaved robots, the concept of robot exclusion has been invented. The idea is that the server administrators and document authors can specify which portions of the site they wish to protect from the robots.</p>

<p>The most popular mechanism, and the de facto standard supported by all the major robots, is the "Robots Exclusion Standard" (RES) written by Martijn Koster et al. in 1994. It specifies the format of a text file containing directives that instruct the robots which URL paths to avoid. To be found by the robots, the specifications must be placed in <code>`/robots.txt&#039;</code> in the server root, which the robots are supposed to download and parse.</p>

<p>Although Wget is not a web robot in the strictest sense of the word, it can downloads large parts of the site without the user's intervention to download an individual page. Because of that, Wget honors RES when downloading recursively. For instance, when you issue: <code>wget -r http://www.server.com/</code> First the index of `www.server.com' will be downloaded. If Wget finds that it wants to download more documents from that server, it will request <code>`http://www.server.com/robots.txt&#039;</code> and, if found, use it for further downloads. `robots.txt' is loaded only once per each server.</p>

<p>Until version 1.8, Wget supported the first version of the standard, written by Martijn Koster in 1994 and available at http://www.robotstxt.org/wc/norobots.html. As of version 1.8, Wget has supported the additional directives specified in the internet draft draft-koster-robots-00.txt titled "A Method for Web Robots Control". The draft, which has as far as I know never made to an RFC, is available at http://www.robotstxt.org/wc/norobots-rfc.txt.</p>

<p>This manual no longer includes the text of the Robot Exclusion Standard.</p>

<p>The second, less known mechanism, enables the author of an individual document to specify whether they want the links from the file to be followed by a robot. This is achieved using the META tag, like this: <code>&lt;meta name="robots" content="nofollow"&gt;</code> This is explained in some detail at http://www.robotstxt.org/wc/meta-user.html. Wget supports this method of robot exclusion in addition to the usual <code>/robots.txt</code> exclusion.</p>

<p>If you know what you are doing and really really wish to turn off the robot exclusion, set the robots variable to `off' in your `.wgetrc'. You can achieve the same effect from the command line using the -e switch, e.g. <code>wget -e robots=off url</code></p><p><a href="http://www.askapache.com/seo/seo-with-robotstxt.html"></a><a href="http://www.askapache.com/seo/seo-with-robotstxt.html">SEO with Robots.txt</a> originally appeared on <cite>AskApache.com</cite> </p>]]></content:encoded>
			<wfw:commentRss>http://www.askapache.com/seo/seo-with-robotstxt.html/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>

