phar + clean urls work fully now

This commit is contained in:
Christian Weiske 2011-09-05 18:43:22 +02:00
parent 995dbef2a1
commit f36c79cb7b
3 changed files with 40 additions and 6 deletions

View File

@ -25,12 +25,22 @@ function mapUrls($path)
if (isset($arMap[$path])) { if (isset($arMap[$path])) {
return $arMap[$path]; return $arMap[$path];
} }
$pos = strrpos($path, '.'); $parts = explode('/', $path);
if ($pos === false || strlen($path) - $pos > 5) { $partPos = 1;
//clean url if (in_array($parts[$partPos], array('js', 'player', 'themes'))) {
$path .= '.php'; return '/www' . $path;
} }
return '/www' . $path; if (in_array($parts[$partPos], array('ajax', 'api', 'gsearch'))) {
$partPos = 2;
}
$pos = strrpos($parts[$partPos], '.');
if ($pos === false) {
$parts[$partPos] .= '.php';
$_SERVER['PATH_INFO'] = '/' . implode(
'/', array_slice($parts, $partPos + 1)
);
}
return '/www' . implode('/', $parts);
} }
Phar::webPhar( Phar::webPhar(

View File

@ -31,7 +31,9 @@ class SemanticScuttle_Environment
{ {
if (isset($_SERVER['PHAR_PATH_TRANSLATED'])) { if (isset($_SERVER['PHAR_PATH_TRANSLATED'])) {
$fscript = '/' . $_SERVER['SCRIPT_NAME']; $fscript = '/' . $_SERVER['SCRIPT_NAME'];
if ($fscript == $_SERVER['PATH_INFO']) { if ($fscript == $_SERVER['PATH_INFO']
|| $fscript == $_SERVER['PATH_INFO'] . '.php'
) {
return null; return null;
} else if (substr($_SERVER['PATH_INFO'], 0, strlen($fscript)) == $fscript) { } else if (substr($_SERVER['PATH_INFO'], 0, strlen($fscript)) == $fscript) {
return substr($_SERVER['PATH_INFO'], strlen($fscript)); return substr($_SERVER['PATH_INFO'], strlen($fscript));

View File

@ -251,6 +251,28 @@ class SemanticScuttle_EnvironmentTest extends PHPUnit_Framework_TestCase
); );
} }
public function testGetServerPathInfoPharCleanUrl()
{
$_SERVER = array(
'HTTP_HOST' => 'dist.bm.bogo',
'SERVER_NAME' => 'dist.bm.bogo',
'SERVER_ADDR' => '127.0.0.1',
'SERVER_PORT' => '80',
'DOCUMENT_ROOT' => '/etc/apache2/htdocs' ,
'SCRIPT_FILENAME' => '/home/cweiske/Dev/html/hosts/dist.bm.bogo/SemanticScuttle-0.98.X.phar' ,
'QUERY_STRING' => '',
'REQUEST_URI' => '/SemanticScuttle-0.98.X.phar/populartags',
'SCRIPT_NAME' => 'populartags.php',
'PATH_INFO' => '/populartags',
'PATH_TRANSLATED' => 'phar:///home/cweiske/Dev/semanticscuttle/cwdev/dist/SemanticScuttle-0.98.X.phar/www/populartags.php',
'PHP_SELF' => '/SemanticScuttle-0.98.X.phar/populartags',
'PHAR_PATH_TRANSLATED' => '/home/cweiske/Dev/html/hosts/dist.bm.bogo/populartags',
);
$this->assertNull(
SemanticScuttle_Environment::getServerPathInfo()
);
}
public function testGetServerPathInfoPharWithInfo() public function testGetServerPathInfoPharWithInfo()
{ {
$_SERVER = array( $_SERVER = array(