Thank you for the correction and clarification (and subject line 
update) -- you provided some excellent and very helpful information.

        It's good to know that the AcceptPathInfo directive isn't needed for 
the Location stanza (simpler configurations are my preference after 
all), and your explanation perfectly makes sense.

        I'm using the FilesMatch stanza to handle all .pl files (and files 
with no suffix, intentionally presumed to be handled by mod_perl2 
just as .pl files are) instead of the Location stanza, so that's 
likely why the AcceptPathInfo directive is useful in my environment.

> Hi Randolf.
> 
> I mark this OT because it is not directly related to the OP's initial 
> question.
> But maybe a nitpick :
> The httpd documentation on AcceptPathInfo is certainly interesting to read 
> (and in years 
> of working with Apache httpd and mod_perl I have never seen it before), but I 
> believe that 
> your recommendation below is not entirely accurate.
> You do not /need/ to add "AccepPathInfo On", in order to have access to the 
> "path" 
> component in a mod_perl handler.
> And even your example would work perfectly without it.
> That is because the default value of this setting, is already to let the 
> handler decide 
> itself, if the request URI should be accepted or not.
> For example, for your example, if you had this configuration :
> <Location /profile/>
> ...
>    SetHandler mod_perl
>    PerlResponseHandler my::module->handler
> ...
> </Location>
> then, any request with a URI starting with "/profile/" would be honored by 
> Apache, and 
> passed to my::module::handler(), and it would be my::module::handler() which 
> gets to 
> decide what to do with whatever follows the leading "/profile/".
> Including obtaining the rest of that URI (via $r->uri or $r->path_info), 
> parse it, 
> interpret it as parameters or not, reject it with a 404, or whatever.
> With the Location above, Apache httpd won't even /look/ at whether this path 
> really exists 
> on the filesystem, which means that the AcceptPathInfo, whatever its setting 
> is, won't 
> even come into play (it also does not hurt, whatever you set it to).
> It only plays a role, when the response handler is /not/ yours (like in the 
> filter example 
> shown in the httpd documentation), and you want to override whathever this 
> other handler 
> would normally do in that case.
> 
> To tell the entire truth, I have not really tested the above specifically. 
> But that is 
> what the documentation (and my apache/mod_perl experience) tells me.
> (I do many things with paths also, and have never needed this setting before).
> 
> On 07.08.2017 18:53, Randolf Richardson wrote:
> >     In your "httpd.conf" file (for your VirtualHost if you're using
> > virtual hosts) you'll need to add this line:
> >
> >             AcceptPathInfo        On
> >
> >     Then you may find the documentation surrounding $r->path_info to be
> > of particular interest, which you can read about here:
> >
> >             
> > https://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_path_info_
> >
> >     I use this to implement simple URIs on sites that look like
> > "/profile/29862938728" instead of "/profile?id=29862938728" to make
> > it easier for users to share links.  Based on your question, it seems
> > to me that you're wanting to know how to do something like this.
> >
> >     Of course, you'll need to write your own Perl code to handle these
> > requests, and I suspect that's likely what you're wanting to do.  One
> > thing I find very helpful in having done this myself is the use of
> > the 404 response code when the data is wrong (e.g., the profile ID
> > number does not exist in the database) because then the web server
> > just passes everything along to whatever I have configured separately
> > for the 404 handler (this is important because it properly
> > communicates to search engine spiders and other automated systems
> > that the page doesn't exist and should be ignored).
> >
> >> Hi,
> >>
> >> for this like request:
> >> curl http://dns-api.org/AAAA/dns-api.org
> >>
> >> in Dancer we could write:
> >>
> >> get '/:type/:domain/?' => sub {
> >>
> >>      my $rtype  = params->{ 'type' };
> >>      my $domain = params->{ 'domain' };
> >>
> >>
> >> But in a MP handler, how could we get the similiar result, treating
> >> request path as GET/POST arguments?
> >> thanks.
> >>
> >
> >
> > Randolf Richardson - rand...@inter-corporate.com
> > Inter-Corporate Computer & Network Services, Inc.
> > Beautiful British Columbia, Canada
> > http://www.inter-corporate.com/
> >
> >
> 


Randolf Richardson - rand...@inter-corporate.com
Inter-Corporate Computer & Network Services, Inc.
Beautiful British Columbia, Canada
http://www.inter-corporate.com/


Reply via email to