On 22 November 2001, Mikhail Sobolev said:
> I have a namespace accessible as /private/log, the base URL is /probe.
> So in my browser I try the following URLs:
>
> http://localhost/probe/private/log
> http://localhost/probe/private/log/
> http://localhost/probe/private/log/?entry=1
> http://localhost/probe/private/log?entry=1
>
> The first URL redirects me to the second and everything works okay in
> both casess. The third URL gives me something reasonable [and
> different from the second case].
OK, all makes sense so far.
> The fourth case results in error 404.
Right: the URL for a namespace must have a trailing slash; the URL for a
callable must not. #1 redirects you to #2 purely as a convenience
measure. (It's the same as with directories and files in a
filesystem-based web site: if you access "/foo" where "/www/htdocs/foo"
is a directory, the web server redirects you to "/foo/".)
Hmmm... I wonder why #4 doesn't get redirected to #3. It probably
should, for consistency with the #1 -> #2 redirect.
Ooh, things are not so simple. Our web site uses a similar feature; if
you go to
http://fab.mems-exchange.org/user/?/foo
you will login and then be redirected to /foo. (That way, we can let
people poke around the site and login only when they try to do something
that requires authorization.) The URL looks funny because of the "/?/",
but it makes sense if you think about it -- and, more importantly, it
works!
However, if I try to access
http://fab.mems-exchange.org/user?/foo
then I am redirected to
http://fab.mems-exchange.org/user/
-- ie. the fix-trailing-slash redirect *is* done, but it loses the query
string. Oops!
I think that's a bug, but it's not consistent with what you're seeing,
Mikhail. Are you running Quixote 0.4.2? (Should be revision 1.103 of
publish.py.)
Greg
--
Greg Ward - software developer gward@mems-exchange.org
MEMS Exchange http://www.mems-exchange.org