Aaron Dalton wrote:
I'm using mod_perl and CGI::Application::Dispatch to create a RESTful
web application. In the one resource, GETs should be sent to the
default handler, and all other requests to the dispatcher. I have tried
using <Limit> and <LimitExcept>, but they do not appear to be working.
The handlers get processed regardless. Here is the current config:
<Location /fs>
<LimitExcept GET>
Allow from All
SetHandler perl-script
PerlHandler BackCAD::Dispatch
</LimitExcept>
<Limit GET>
Allow from All
SetHandler default-handler
</Limit>
</Location>
Is there some way to make this work? Do I need to write some sort of
pre-dispatcher that checks the request method and returns DECLINED if
it's GET? But if it's *not* GET, how do I then pass control on to the
other dispatcher?
Just by curiosity, what happened to the suggestions I gave you on the
Apache httpd list (apart from the first one, which was to cross-post here) ?
Also, the reason why the above does not work is probably that the
<Limit...> sections are not really full containers. So your SetHandlers
above probably overwrite one another regardless, and only the last one
counts.
Another quick/cheap hack maybe :
> <Location /fs>
> Allow from All
> SetHandler perl-script
> PerlHandler BackCAD::Dispatch
> </Location>
then modify the code of BackCAD::Dispatch to return DECLINED if it's a GET.
Honestly, I've never tried that, and I don't know if then Apache would
process it with its default handler. But it's worth a try maybe.