[mod_python] Apache directory listing

Graham Dumpleton graham.dumpleton at gmail.com
Tue May 29 22:41:07 EDT 2007


Don't print values of req.prev, req.next or req.main as when they are
in turn printed they may follow back through the opposite link and
cause a loop. If you really want to print something, print:

  req.prev is None

ie., boolean value of whether it is None or not.

On 30/05/07, Aaron Gallagher <habnabit at gmail.com> wrote:
>                 req.log_error('Redirect 3, "%s"' % req.uri, apache.APLOG_DEBUG)
>                 req.internal_redirect('%s?_404&orig=%s' % (ROOT, escape(os.path.join
> (req.fulluri, page))))
>                 req.log_error('Redirect 3, "%s" "%s" "%s"' % (req.prev, req.next,
> req.main), apache.APLOG_ERR)
>                 req.log_error('Redirect 3 done (%s)' % req.fulluri,
> apache.APLOG_DEBUG)
>                 return apache.DONE
>
> That causes the page to be printed over and over and "Redirect 3" to
> also be printed over and over in the log. The same thing happens if I
> do if req.prev etc. before I print them.
>
> On May 29, 2007, at 7:31 PM, Graham Dumpleton wrote:
>
> > Sorry, that doesn't make any sense at all. Are you able to post the
> > code you are using? This is getting all too hard to follow when one
> > can only make assumptions about what you are doing.
> >
> > Graham
> >
> > On 30/05/07, Aaron Gallagher <habnabit at gmail.com> wrote:
> >> On May 29, 2007, at 4:23 PM, Graham Dumpleton wrote:
> >>
> >> > On 30/05/07, Aaron Gallagher <habnabit at gmail.com> wrote:
> >> >> Also, I seem to actually be having bizarre problems with my
> >> >> redirects. When I request /a/b/c/d/, my handler catches the bad
> >> URL
> >> >> and executes this code:
> >> >> req.internal_redirect('/?__404')
> >> >> return apache.DONE
> >> >>
> >> >> What happens is I get a page that has a text/plain mime type
> >> with a
> >> >> 200 response code that looks essentially like this (stripping
> >> out a
> >> >> lot of HTML):
> >> >> Page not found: /d/
> >> >> Page not found: /c/d/
> >> >> Page not found: /b/c/d/
> >> >> Page not found: /a/b/c/d/
> >> >>
> >> >> I found that after the redirect, the handler (which is a
> >> >> fixuphandler) doesn't recur, but return apache.DONE, and then
> >> another
> >> >> handler is called. My only thought could be that this is
> >> intrinsic to
> >> >> the fixuphandler, but that seems silly. Skipping the redirect and
> >> >> just returning 404 seems to work, and it doesn't return four not
> >> >> found pages.
> >> >>
> >> >> What do I need to do to fix this?
> >> >
> >> > This is probably the problem with autoindex I briefly mentioned.
> >> To do
> >> > an index it actually does a sub request as far as the fixup handler
> >> > phase for every item which it might list in the index to
> >> determine if
> >> > it has access rights and should be listing it. If you have handlers
> >> > for these phases it will trigger them for the subrequest as well
> >> which
> >> > might cause issues. One can detect if such a handler is called in
> >> > subrequest by looking whether req.prev or req.main (cant remember
> >> > which), is not None.
> >>
> >> I just tried this, and whenever I tried to access req.prev or
> >> req.main (even req.next), the request would be scrapped and a new one
> >> created, that would get to the same point before starting again. I
> >> would have thousands of lines of "Debug: preparing to redirect"
> >> before I would just have to cancel the page from loading.
> >>
> >> > When I get a chance to at least get directory index to week as you
> >> > indicate what you want, then we can start stepping through these
> >> > others issues.
> >> >
> >> > Graham
> >>
> >> Aaron Gallagher
> >> <habnabit at gmail.com>
> >>
> >>
> >>
>
> Aaron Gallagher
> <habnabit at gmail.com>
>
>
>


More information about the Mod_python mailing list