On Tue, 3 Apr 2001, Amy Roh wrote:

> (1) According to NCSA "virtual gives a virtual path to a document on the
> server."  So no matter which context you're in, <!--#include
> virtual="/test.txt" --> should try to access "test.txt" on your server's
> root, right?  Does virtual have to start with "/" always?  I would think
> so.  If not, what should be the behavior if it doesn't start with "/",
> context based?

If I remember this - "context based" is something specific to servlets
( 2.2 and after ), the /paths are allways relative to the server ( or
vhost ) root URI.

One tricky part is that /foo/bar.txt may not refer to the file 
ROOT/foo/bar.txt - it may be mapped by the server to a different location
( Location is similar with a servlet context - so it may be in context
foo, with a different docbase ). 

Apache is doing a re-mapping ( run_subreq ) to get to the right file ( the
relevant file is httpd-2.0/modules/filters/mod_include.c ). 

That mean you need to do use a request dispatcher or something equivalent 
to make sure the path is mapped ( and of course to play some games with
the URIs to match the servlet and http server semantics ).

I think the security rules are also applied during include - but you
should test that.


> (2) Also, NCSA states "file gives a pathname relative to the current
> directory."  So obviously <!--#include file="test.txt" --> should try to
> access "test.txt" in your current directory.  What about "<!--#include
> file="/test.txt" -->"?  Should that look for "test.txt" on your server
> root or on webapp?

Again, distant memories - but include file was supposed to be the
"fast" version that doesn't do mapping/auth/etc - so it is limited to the
local directory ( and I think it didn't do security checks either ).

Sorry, I used SSI long ago ( I think it was a Cern server ), but I
still remember some pain :-)

Costin 

Reply via email to