> 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/ ## ## ## ################################################################