|
PITS /
00965Summary: Clean URLs & Apache MultiViews/Alias issue
Created: 2007-08-09 08:25
Status: Open
Category: Bug
From: julien /dot/ charbon /at/ gmail /dot/ com, Dfaure
Assigned:
Priority: 52
Version: 2.2.0-beta63
OS: Apache 2.2.3 & Php 5.2.0
Description: Hi, I configure pmwiki to get clean URLs using Apache MultiViews as defined in: Wrapper using Apache MultiViews And I guess I find a bug. You have in pmwiki.php:296: $pagename = @$_REQUEST['n'];
if (!$pagename) $pagename = @$_REQUEST['pagename'];
if (!$pagename &&
preg_match('!^'.preg_quote($_SERVER['SCRIPT_NAME'],'!').'/?([^?]*)!',
$_SERVER['REQUEST_URI'],$match))
$pagename = urldecode($match[1]);
Or with clean URLs using Apache MultiViews configuration on a request on : http://host/wiki/Group/Page you have $_SERVER['SCRIPT_NAME'] is equal to "wiki.php" $_SERVER['REQUEST_URI'] is equal to /wiki/Group/Page thus: preg_match('!^'.preg_quote($_SERVER['SCRIPT_NAME'],'!').'/?([^?]*)!',
$_SERVER['REQUEST_URI'],$match))
failed and I get an empty pagename value. Below a patch a correct this issue for me. This not the final correction but this patch show precisely where is the issue. I had the same kind of issue (ie. inconsistency between
Alias /~dev "C:/hosted/pmwiki-dev"
<Directory "C:/hosted/pmwiki-dev">
AddType application/x-httpd-php4 .php
...
</Directory>
In this case: ['SCRIPT_NAME'] => /pmwiki-dev/pmwiki.php ['REQUEST_URI'] => /~dev/pmwiki.php/Group/Page And I manage to solve it with the following code in
if (!$pagename
&& (strpos($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME']) === false)
&& preg_match('!^'.preg_quote(str_replace($_SERVER['PATH_INFO'], '',
$_SERVER['REQUEST_URI']),'!')
.'/?([^?]*)!',
$_SERVER['REQUEST_URI'],$match))
$pagename = urldecode($match[1]);
Dfaure October 04, 2007, at 09:50 AM |