[Catalyst] Lighttpd pathing solved
Mark Blythe
list at markblythe.com
Fri Jun 23 07:26:12 CEST 2006
After much debugging, I finally was able to fix the problem I was having
with lighttpd + FastCGI. See original message below for details. What it
boils down to is that lighttpd seems to report in SCRIPT_NAME (environment
var) what some other web servers report in PATH_INFO. This was causing
$c->req->path to be set to nothing for URLs which end in a slash, such as:
http://localhost/foo/bar/
The result was that these requests were always dispatched to my
application's default action.
I was able to write a small plugin that fixes this issue without breaking
the dev server script. The guts of the plugin are:
sub handle_request {
my ($class, %args) = @_;
if (exists $args{env}) {
# lighttpd seems to report these backward
$args{env}{PATH_INFO} ||= delete $args{env}{SCRIPT_NAME};
}
$class->NEXT::handle_request(%args);
}
Are there any other lighttpd users out there who have had this trouble? If
so, would this plugin be useful for anybody else?
---------- Forwarded message ----------
From: Mark Blythe <list at markblythe.com>
Date: Jun 22, 2006 12:08 AM
Subject: Path handling inconsistencies?
To: The elegant MVC web framework <catalyst at lists.rawmode.org>
I'm seeing a difference in how paths are handled when running under the test
server (myapp_server.pl) vs lighttpd/FastCGI. For instance, I have an
action defined as:
sub bar : Regex('^foo/(\d+)/bar/(\d+)$') {
...
}
It's supposed to take two numeric ID's in the URL. If I test with the
following URL:
http://localhost:3000/foo/1/bar/2
It works in both the dev server and FastCGI. I see the following line in
debug output:
[Wed Jun 21 23:50:22 2006] [catalyst] [debug] "GET" request for
"foo/1/bar/2" from "192.168.0.100"
However, if I add a trailing slash to the URL:
http://localhost:3000/foo/1/bar/2/
It works in the dev server, but *not* in FastCGI. Somehow, this causes it
not to match. I get this puzzling entry in the FastCGI debug output:
[Wed Jun 21 23:53:18 2006] [catalyst] [debug] "GET" request for "" from "
192.168.0.100"
Any ideas where to start looking for the problem? I'd guess in one of the
Catalyst::Engine modules, but a first stab at debugging didn't turn up
anything obvious. I did try removing the trailing $ from my action regex,
but it made no difference.
Help!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.rawmode.org/pipermail/catalyst/attachments/20060622/f932eda1/attachment-0001.htm
More information about the Catalyst
mailing list