Bug 188441
Summary: | url(-relative=>1) is broken in CGI.pm | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Bruno Wolff III <bruno> | ||||
Component: | perl | Assignee: | Robin Norwood <robin.norwood> | ||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | David Lawrence <dkl> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | medium | ||||||
Version: | 5 | CC: | jorton, perl-devel | ||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | 5.8.8-5 | Doc Type: | Bug Fix | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2006-10-04 18:40:58 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | |||||||
Bug Blocks: | 199152 | ||||||
Attachments: |
|
Description
Bruno Wolff III
2006-04-10 02:47:18 UTC
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: --- <Directory "/var/www/cgi-bin"> AllowOverride None Options FollowSymLinks Order allow,deny Allow from all RewriteEngine On RewriteBase /cgi-bin RewriteRule ^testabc.cgi$ test.cgi </Directory> --- 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: testabc.cgi /testabc.cgi 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) . Sorry - my mistake - I was looking at the wrong output - it does produce : test.cgi /testabc.cgi. This is a CPAN CGI module bug: http://rt.cpan.org/Public/Bug/Display.html?id=18500 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. OK, I now see the problem - CGI.pm-3.15 has a new "-rewrite" sub url() parameter, 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 bug 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. Created attachment 127678 [details]
CGI.pm (3.15) fixed to use rewritten REQUEST_URI in url() if rewrite!=0
Sorry, should have mentioned: copy the above CGI.pm attachment to /usr/lib/perl5/5.8.8/CGI.pm to test. I tried this out and it looks like it is working. Thanks. 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 #18692] http://rt.cpan.org/Ticket/Display.html?id=18692 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 bug report. assigning to rnorwood |