In order for content of a directory on the filesystem to be 'webservable', you gotta have a Directory
directive that encapsulates it, and the files have to be accessible by the user that your webserver executes as. Most default installs have one Directory
set up and all of the content falls under it (ie. /var/www/).
This is not mandatory, you can have content served from underneath other directories, as long as you have another Directory
section defined for it. You can take multiple directories like that and make it seem like one happy tree with an Alias
directive.
You can also prohibit serving certain parts of an otherwise 'webservable' tree, for exmample to prevent include files containing DB connect strings, passwords, usernames, etc.
Same rules apply to scripts, just with ScriptAlias
directive.