[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: C. Michael Pilato <cmpilato_at_collab.net>
Date: Mon, 23 Aug 2010 13:48:42 -0400

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@[10.0.1.37]%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:49:22 CEST

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