Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug report.
Summary: url(-relative=>1) is broken in CGI.pm
Product: Red Hat Web Application Stack
+++ This bug was initially created as a clone of Bug #188441 +++
Description of problem:
url(-relative) no longer returns the original relative path before rewrites.
This used to work in FC4.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Set up a redirect in your .htaccess file such as:
RewriteRule ^testabc.cgi$ test.cgi
2. Create a test perl script, test.cgi such as:
use CGI qw/:standard -no_xhtml/;
print "Content-type: text/plain\n\n";
print url(-relative=>1), "\n";
print url(-absolute=>1), "\n";
3. Look at the web page /testabc.cgi
-- Additional comment from jvdias(a)redhat.com on 2006-04-12 17:16 EST --
Hmmm, this does not seem to be a problem with perl's CGI:: module -
I put your rewrite rule in /etc/httpd/conf/httpd.conf's /var/www/cgi-bin/
'Directory' entry, from the standard config from a clean install of
httpd-2.2.0-6 , so it now reads:
Allow from all
RewriteRule ^testabc.cgi$ test.cgi
NOTE: before the server would process the rewrite rule, it insisted that
the FollowSymLinks or FollowSymLinks owner option be specified - without
one of these options enabled, rewrite rules will be ignored.
Then your example test.cgi script works as expected, producing the output:
Perhaps your http server is not loading your .htaccess file correctly /
doesn't allow the FollowSymLinks or RewriteRule options ?
I'm CC-ing the httpd maintainer on this - perhaps he could shed some light on
why the rewrite rule might not be taking effect.
If the rewrite rule is correctly applied, the perl CGI module seems to have
no problem with url(-relative=>1) / url(-absolute=>1) .
-- Additional comment from jvdias(a)redhat.com on 2006-04-12 17:49 EST --
Sorry - my mistake - I was looking at the wrong output - it does produce :
This is a CPAN CGI module bug:
I'll try out the patch from the above bug (now in CGI 3.17) and see if it
fixes the problem - if so, it can go into the next perl-5.8.8-6+ release.
-- Additional comment from jvdias(a)redhat.com on 2006-04-12 18:53 EST --
OK, I now see the problem - CGI.pm-3.15 has a new "-rewrite" sub url()
which, if 0, is meant to make url() return the "$SCRIPT_NAME", not the
"$REQUEST_URI". It seems the programmer applies this logic only in the
case of '-absolute=>1', NOT '-relative=>1'. Yes, this seems like a
to me - and is still in the latest 3.17 version.
Please try out the attached CGI.pm which fixes the problem - if it works OK,
I'll submit it with the next perl-5.8.8-6 version.
-- Additional comment from jvdias(a)redhat.com on 2006-04-12 18:54 EST --
Created an attachment (id=127678)
CGI.pm (3.15) fixed to use rewritten REQUEST_URI in url() if rewrite!=0
-- Additional comment from jvdias(a)redhat.com on 2006-04-12 18:55 EST --
Sorry, should have mentioned: copy the above CGI.pm attachment to
/usr/lib/perl5/5.8.8/CGI.pm to test.
-- Additional comment from bruno(a)wolff.to on 2006-04-12 22:26 EST --
I tried this out and it looks like it is working. Thanks.
-- Additional comment from jvdias(a)redhat.com on 2006-04-13 16:30 EST --
Thanks for the testing. The fix is now checked into CVS and will go into the
next perl-5.8.8-6 release.
Upstream CPAN CGI.pm bug raised: [rt.cpan.org
-- Additional comment from updates(a)fedora.redhat.com on 2006-06-05 17:00 EST --
perl-5.8.8-5 has been pushed for fc5, which should resolve this issue. If these
problems are still present in this version, then please make note of it in this
Configure bugmail: https://bugzilla.redhat.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.