[Zope] Hmm weird!

Sam Gendler sgendler@akamai.com
Mon, 19 Mar 2001 10:21:31 -0800


This one is simple.  When a browser sees a relative URL (which is what you have
in your href field in the dtml source, since it doesn't start with a '/'
character), it has to construct a link based on the current URL.  The first
example, since the current URL does not end in a slash, is assumed to be the
content of a FILE called 'test', in a directory called '/'.  When it constructs
the relatvie url, it appends the new filename to the end of the current
DIRECTORY, removing the 'test' element.  The second example has a slash at the
end, so the current file is considered to be the default content in the
directory called '/test/'.  The relative url is then constructed within the
'/test/' directory, so the new filename is appended to '/test/'.  That is why
you are getting two separate URLs.

Use an absolute url in your link.  On most webservers, this wouldn't work, since
a single address can not usually be addressed as both a file and a directory.
In your first example with apache, apache would redirect the browser to the
correct form, with the final slash, if it was a directory.  If it was a file,
the second example would result in an error.  With Zope, acquisition makes it
possible for the thing to work either way, although not with correct results.

--sam

Phil Harris wrote:

> Sorry for the obtuse subject but, let's see if I can explain, and let's see
> if other people are seeing this:
>
> I've got this DTML page:
>
> <html><body>
> <h2><dtml-var title_or_id></h2>
> <a href="index_html">click here to refresh</a>
> </body>
> </html>
>
> OK looks fine, but the interesting bit is the anchor at the bottom.
>
> Depending on the URL typed into the browser address bar I get different
> results (but I think they should be the same results).
>
> If I put http://localhost:12380/test I get this result:
>
> <html><body>
> <h2>index_html</h2>
> <a href="index_html">click here to refresh</a>
> </body>
> </html>
>
> Notice the address in the anchor it looks ok, but
>
> If I put http://localhost:12380/test/ into the address bar I get:
>
> <html><body>
> <h2>index_html</h2>
> <a href="index_html">click here to refresh</a>
> </body>
> </html>
>
> Which I have to admit looks identical, *BUT* the anchor takes you to
> different addresses.
>
> The first one takes you to the index_html in the root, the second one takes
> you to the index_html in the test folder as it should.
>
> If anyone can understand what I'm going on about and if then any of you have
> any ideas, *please* let me know.
>
> I'm not sure if this is a Zope problem (I don't really see how it could be
> since the address is the same), or if it's a browser problem.  However I'm
> dead confused here.
>
> I can't publish the real address for you top verify this, your going to have
> to believe me or test it yourself.
>
> tia
>
> Phil
> phil.harris@zweb.co.uk
>
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )