> That right there is kind of a red-flag. Not that you're doing anything wrong, 
> but Apache has a weird notion of PATH_INFO when a real directory exists. And 
> Dispatch relies on PATH_INFO for parsing. You can check what Apache thinks it 
> is by printing the $ENV{PATH_INFO} in your Dispatch.pm.

Ok, you're definitely right about that.  Apache just completely drops
that first bit, which was expected

>
> Why are you using a Directory for this? I'm not sure if that affects what 
> Apache does with PATH_INFO or not, but I usually use a Location. Especially 
> since your not serving things out of that directory directly (instead you're 
> using ACD::Dispatch to provide a "virtual" directory).

Because I didn't know how to do it another way? :-)  I updated it to this:

<Location  /abc>
   SetHandler perl-script
   PerlHandler ACD::Dispatch
    AllowOverride None
    Order allow,deny
    Allow from all
</Location>

Note: The following has been there all along:
    ScriptAlias /abc "/path/to/abc"

>> Go to:
>> localhost/abc/
>> Get:
>> Home, welcome
>
> What is PATH_INFO here? I would expect it to be ''

You are correct.

>> Go to:
>> localhost/abc/fdjksalfdsafdsa
>> Get:
>> Home, welcome
> What is PATH_INFO here? It looks like it should be 'fdjksalfdsafdsa', but 
> Dispatch looks like it's behaving with a PATH_INFO of ''.

You are correct.

>> Go to:
>> localhost/abc/jkfldjskljfdkls/home_othercontroller
>> Get:
>> Error'd
> Again, PATH_INFO looks like it should be 
> 'jkfldjskljfdkls/home_othercontroller' but Dispatch behaves like it's 
> "home_othercontroller"

You are correct.

>> Go to:
>> localhost/abc/jkfldjskljfdkls/home_othercontroller/some_rm
>> Get:
>> Home/OtherController, some_rm
> Similar to the above.

You are correct.

>> So I guess my questions are: why is it ignoring that first directory?
> I think you've hit on a weirdism of Apache changing the PATH_INFO if the real 
> directory (in this case "abc") exists. Try changing the directory name to 
> something else and see if that changes anything.

Ok, abc has actually always been an alias for a longer name and never
really did exist.  Or is an alias the same?

>> And
>> do I actually have to put the startrunmode in the dispatcher?  It seems to
>> be ignoring the one set in OtherController.pm.
> No, the start run mode should be executed if no run mode is given in the 
> PATH_INFO. Try turning on debugging and see if you can get any more 
> information.

I figured this one out.  The problem was that I had the rule
':app/:rm' => {} and it should have been ':app/:rm?' => {}.

Thanks for all of your help, I really appreciate it.

-fREW

#####  CGI::Application community mailing list  ################
##                                                            ##
##  To unsubscribe, or change your message delivery options,  ##
##  visit:  http://www.erlbaum.net/mailman/listinfo/cgiapp    ##
##                                                            ##
##  Web archive:   http://www.erlbaum.net/pipermail/cgiapp/   ##
##  Wiki:          http://cgiapp.erlbaum.net/                 ##
##                                                            ##
################################################################

Reply via email to