You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Mike Wohlgemuth <mj...@purplefrog.com> on 2002/01/08 22:08:18 UTC

mod_rewrite/9411: mod_rewrite does not use URL as documented

>Number:         9411
>Category:       mod_rewrite
>Synopsis:       mod_rewrite does not use URL as documented
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    apache
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Tue Jan 08 13:10:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     mjw@purplefrog.com
>Release:        1.3.22
>Organization:
apache
>Environment:
Linux tetsuo.woogie.net 2.4.2-2 #1 Sun Apr 8 20:41:30 EDT 2001 i686 unknown
>Description:
The documentation for mod_rewrite says "This module operates on the full URLs", and the URL rewriting guide has a sample reverse proxy with the following line:

RewriteRule    ^(http|ftp)://.*          -  [F]

This line purports to block proxy requests to the reverse proxy.  It does not.  It seems that mod_rewrite is actually using the request URI and not the URL.  Nothing will match this rule.  A request like

GET http://blah.com/index.html

will show up as

/index.html

in the rewrite rules, so the documented way of blocking proxy requests to reverse proxies is wrong.
>How-To-Repeat:

>Fix:
Here is a work around, but I would say that either Apache's behavior should change to match the documentation, or the documentation should change to match Apache's behavior.  I don't know that Apache used to work as documented, because I recall testing this in the past, but it has been a few years since I last verified that mod_rewrite worked properly.

If you use 

RewriteCond %{THE_REQUEST} "!^(GET|POST) /.*$"
RewriteRule .* - [F,L]

instead of

RewriteRule    ^(http|ftp)://.*          -  [F]

You get the behavior you want
>Release-Note:
>Audit-Trail:
>Unformatted:
 [In order for any reply to be added to the PR database, you need]
 [to include <ap...@Apache.Org> in the Cc line and make sure the]
 [subject line starts with the report component and number, with ]
 [or without any 'Re:' prefixes (such as "general/1098:" or      ]
 ["Re: general/1098:").  If the subject doesn't match this       ]
 [pattern, your message will be misfiled and ignored.  The       ]
 ["apbugs" address is not added to the Cc line of messages from  ]
 [the database automatically because of the potential for mail   ]
 [loops.  If you do not include this Cc, your reply may be ig-   ]
 [nored unless you are responding to an explicit request from a  ]
 [developer.  Reply only with text; DO NOT SEND ATTACHMENTS!     ]