[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Noise: spicy autoindex httpd.conf workaround #fail

From: Justin Erenkrantz <justin_at_erenkrantz.com>
Date: Mon, 23 Aug 2010 10:50:49 -0700

Why do you want mod_rewrite at all? Enabling that mod_mime
directive will let mod_autoindex remap / to /index.html when it exists
in the virtual filesystem. -- justin

On Mon, Aug 23, 2010 at 10:48 AM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
> Hrm.  I'm not seeing the connection here.  I'm looking for a way to pull off
> a Rewrite condition based on the existence of a given URI.  The docs imply
> that this can be done with "RewriteCond SOME_URI -U", but appear to just be
> wrong -- the existence of SOME_URI doesn't appear to tested at all, only
> it's accessibility (from an authn/authz standpoint).
> On 08/20/2010 12:51 PM, Justin Erenkrantz wrote:
>> Based on what you describe, I think this is likely what you are looking for:
>> http://httpd.apache.org/docs/2.0/mod/mod_mime.html#modmimeusepathinfo
>> http://mail-archives.apache.org/mod_mbox/httpd-dev/200209.mbox/%3C20020904211343.GA16785@apache.org%3E
>> http://mail-archives.apache.org/mod_mbox/httpd-dev/200306.mbox/%3C2147483647.1054772793@[]%3E
>> HTH.  -- justin
>> On Fri, Aug 20, 2010 at 1:27 AM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
>>> [Warning:  This matter is far from highly pertinent.  One tackles strange
>>> non-problems when in an atypical environment, such as a hotel room in CA.]
>>> I had someone ask me about Subversion autoindex support.  So, like, you
>>> point a web browser at
>>> http://svn.apache.org/repos/asf/subversion/site/publish/ and *pow* magically
>>> you are now looking at the index.html inside that directory.
>>> Clearly, this could be done with an hour or two of mod_dav_svn hackery and
>>> some new directives there.  But I was trying to come up with an httpd.conf
>>> workaround that did the trick.  Here's what I tried.  (On my system, all my
>>> Subversion repositories live inside the /repos/ Location.)
>>>   # If this is a GET request (but not a subrequest) aimed at my
>>>   # collection of Subversion repositories and with a trailing slash, and
>>>   # if there exists an index.html file inside that directory, then
>>>   # temporarily redirect the browser to the index.html file.
>>>   RewriteEngine on
>>>   RewriteCond %{IS_SUBREQ}              false
>>>   RewriteCond %{REQUEST_METHOD}         GET
>>>   RewriteCond %{REQUEST_URI}            ^/repos/.*/$
>>>   RewriteCond %{REQUEST_URI}index.html  -U
>>>   RewriteRule /repos/(.*)/$             /repos/$1/index.html [L,R]
>>> The result was that for every directory in which an index.html was found,
>>> that file was served (via a browser redirect).  Yay!  Unfortunately, the
>>> redirect was transmitted for directories which had no index.html child, too.
>>>  Boo!
>>> Sadly, I found that despite the fact that the Apache docs say about that
>>> "-U" test the following:
>>>   '-U' (is existing URL, via subrequest)
>>>   Checks whether or not TestString is a valid URL, accessible via all
>>>   the server's currently-configured access controls for that path. This
>>>   uses an internal subrequest to do the check, so use it with care - it
>>>   can impact your server's performance!
>>> In reality "validity" in this context seems to have nothing to do with
>>> "existence".  I traced the subrequest that mod_rewrite made into Subversion,
>>> and found that it never enters mod_dav to actually perform an existence get.
>>>  I guess I expected that the subrequest would GET all the way into
>>> Subversion, where it would get the appropriate error code (HTTP_NOT_FOUND).
>>>  In retrospect, I think I knew that subrequests don't behavior like
>>> full-fledged content-fetching requests.  But the documentation quoted above
>>> is pretty misleading, at any rate, IMO.
>>> --
>>> C. Michael Pilato <cmpilato_at_collab.net>
>>> CollabNet   <>   www.collab.net   <>   Distributed Development On Demand
> --
> C. Michael Pilato <cmpilato_at_collab.net>
> CollabNet   <>   www.collab.net   <>   Distributed Development On Demand
Received on 2010-08-23 19:51:49 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.