So after a little more digging, Roy's observation (As documented)
was correct... for the case of matching trailing-slashes, both with
or both omitted.
All of this dates to well before 2.0.55... and there is absolutely
no argument that an Alias src with a trailing slash, including "/"
should ALWAYS be specified to an target with a trailing slash.
Looking at a simple example...
mv icons/small icons-small
<Directory "/path/to/apache">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Alias / /path/to/apache/icons
Note that for httpd to interpret the http://example/-small/ path, the
parent directory MUST be accessible.
In the default case, while icons/ directory would normally be accessible
and /path/to/apache is not accessible, icons-small/ pathname cannot
be resolved by mod_alias.
By opening up access to /path/to/apache - now mod_alias can evaluate
"-small" in the parent directory and resolve the pathname to icons-small/.
In the usual cases...
Alias /ico /path/to/apache/icons
Alias /ico/ /path/to/apache/icons/
The url http://examples/-small/ does *NOT* resolve, so those docs
are correct when the user follows the directions.
But this is not unique to "Alias / /target"... tweaking the example;
Alias /ico/ /path/to/apache/icons
also results in http://example/ico/-small/ resolving to icons-small/
path if the server is allowed access to the parent directory.
This all matches between 2.0.55 and 2.4.18 mod_alias, no changes
in behavior.
Is it sensible for us to simply add a configuration warning in the
next 2.2 and 2.4 releases? As reporter observes, this isn't a unique
mis-configuration. And not all users read the docs.
I think my text below should have stated;
Note that unexpected expansion occurs when trailing slashes are
not balanced between the source url and target path. For example,
Alias / /usr/share/htdocs
will resolve http://example.com/-private/ as /usr/share/htdocs-private/
while
Alias /content/ /usr/share/htdocs
will similarly result in the the URL /content/-private/ resolving to the
path /usr/share/htdocs-private/
The statement could use some word-smithing.
On Mon, Feb 8, 2016 at 10:37 AM, William A Rowe Jr <[email protected]>
wrote:
> Thanks Eric, now looping back to
>
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/mappers/mod_alias.c?revision=153384&view=co
> to see if this behavior was changed, by which commit, so that we ensure
> the docs match the behavior and can determine what the "correct" behavior
> was supposed to be in the first place :)
>
> On Mon, Feb 8, 2016 at 10:26 AM, Eric Covener <[email protected]> wrote:
>
>> quite old: http://svn.apache.org/viewcvs?rev=326143&view=rev
>>
>> On Mon, Feb 8, 2016 at 11:25 AM, William A Rowe Jr <[email protected]>
>> wrote:
>> > On Mon, Feb 8, 2016 at 10:20 AM, William A Rowe Jr <[email protected]
>> >
>> > wrote:
>> >>
>> >>
>> >> This is worthy of discussion on docs@httpd, so please allow me to cite
>> >> your example... Your report does suggest that we might illustrate this
>> alias
>> >> effect more clearly in the docs, e.g. an example like this;
>> >>
>> >> Note that unexpected expansion may occur when trailing slashes
>> >> are omitted, including the case of "Alias / /foo". Given the example;
>> >> Alias /icons /usr/share/icons
>> >> A request for /icons/small.gif is mapped to
>> /usr/share/icons/small.gif
>> >> A request for /icons-private/small.gif is mapped to
>> >> /usr/share/icons-private/small.gif
>> >> This behavior is by-design.
>>
>>