Some of us here have been bitten by CGI.pm's behavior under mod_rewrite, which is common to use with CGI::Application::Dispatch.
This test illustrates the issue: ### use Test::More; use CGI; print "CGI: $CGI::VERSION\n"; %ENV = ( # These two are always set 'SCRIPT_NAME' => '/real/cgi-bin/dispatch.cgi', 'SCRIPT_FILENAME' => '/home/mark/real/path/cgi-bin/dispatch.cgi', # These two are added by mod_rewrite Ref: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html 'SCRIPT_URL' => '/real/path/info', 'SCRIPT_URI' => 'http://example.com/real/path/info', 'PATH_INFO' => '/path/info', 'REQUEST_URI' => '/real/path/info', 'HTTP_HOST' => 'example.com' ); my $q = CGI->new; is( $q->url( -absolute => 1, -query => 1, -path_info => 1 ), '/real/path/info', '$q->url( -absolute => 1, -query => 1, -path_info => 1 ) should return complete path, even when mod_rewrite is detected.' ); done_testing(); ##### Here's the result with 3.54: # got: '/real' # expected: '/real/path/info' This behavior was not always the case. Older versions of CGI.pm ( I happened to test with 3.05 ), gave the expected result. There's a bug report about the current behavior here: https://rt.cpan.org/Ticket/Display.html?id=45019 I'm evaluating accepting the proposal to address it by removing this line in url(): undef $path if $rewrite_in_use && $rewrite; # path not valid when rewriting active First, I'm looking for feedback on this change. It *is* a behavior change, so it will likely break someone's code somewhere, but on the other hand, it restores a previous functionality, so it will "fix" the upgrade experience for those with an old enough CGI.pm vintage. Unlike adding another option to support both behaviors, I would rather simply remove this code to simply things, if there's some agreement that this is the better behavior. Second, I'm looking for a volunteer to beef up the test coverage of url() so that we have more regression tests for it. A starting point might be to borrow the url() tests from CGI::Simple, and convert them to OO style: http://cpansearch.perl.org/src/ANDYA/CGI-Simple-1.113/t/070.standard.t A simple "diff" is fine, but you are always welcome to fork on github and send a pull request: https://github.com/markstos/CGI.pm Thanks for your feedback on this issue. Mark ##### 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/ ## ## ## ################################################################