122 lines
3.6 KiB
PHP
Executable File
122 lines
3.6 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
/**
|
|
* this is a router file for the php Built-in web server
|
|
* https://secure.php.net/manual/en/features.commandline.webserver.php
|
|
*
|
|
* It provides the same "rewrites" as the .htaccess for apache,
|
|
* or the nginx.conf.sample for nginx.
|
|
*
|
|
* example usage: php -S 127.0.0.41:8082 -t ./pub/ ./router.php
|
|
*/
|
|
|
|
/**
|
|
* Set it to true to enable debug mode
|
|
*/
|
|
define('DEBUG_ROUTER', false);
|
|
|
|
$debug = function ($val) {
|
|
if (!DEBUG_ROUTER) {
|
|
return;
|
|
}
|
|
|
|
if (is_array($val)) {
|
|
$val = json_encode($val);
|
|
}
|
|
|
|
error_log('debug: '.$val);
|
|
};
|
|
|
|
/**
|
|
* Caution, this is very experimental stuff
|
|
* no guarantee for working result
|
|
* has tons of potential big security holes
|
|
*/
|
|
|
|
if (php_sapi_name() === 'cli-server') {
|
|
$debug("URI: {$_SERVER["REQUEST_URI"]}");
|
|
if (preg_match('/^\/(index|get|static)\.php(\/)?/', $_SERVER["REQUEST_URI"])) {
|
|
return false; // serve the requested resource as-is.
|
|
}
|
|
|
|
$path = pathinfo($_SERVER["SCRIPT_FILENAME"]);
|
|
$url = pathinfo(substr($_SERVER["REQUEST_URI"], 1));
|
|
$route = parse_url(substr($_SERVER["REQUEST_URI"], 1))["path"];
|
|
$pathinfo = pathinfo($route);
|
|
$ext = isset($pathinfo['extension']) ? $pathinfo['extension'] : '';
|
|
|
|
if ($path["basename"] == 'favicon.ico') {
|
|
return false;
|
|
}
|
|
|
|
$debug("route: $route");
|
|
|
|
if (strpos($route, 'pub/errors/default/') === 0) {
|
|
$route = preg_replace('#pub/errors/default/#', 'errors/default/', $route, 1);
|
|
}
|
|
|
|
$magentoPackagePubDir = __DIR__."/../pub";
|
|
|
|
if (strpos($route, 'media/') === 0 ||
|
|
strpos($route, 'opt/') === 0 ||
|
|
strpos($route, 'static/') === 0 ||
|
|
strpos($route, 'errors/default/css/') === 0 ||
|
|
strpos($route, 'errors/default/images/') === 0
|
|
) {
|
|
$origFile = $magentoPackagePubDir.'/'.$route;
|
|
|
|
if (strpos($route, 'static/version') === 0) {
|
|
$route = preg_replace('#static/(version\d+/)?#', 'static/', $route, 1);
|
|
}
|
|
$file = $magentoPackagePubDir.'/'.$route;
|
|
|
|
$debug("file: $file");
|
|
|
|
if (file_exists($origFile) || file_exists($file)) {
|
|
if (file_exists($origFile)) {
|
|
$file = $origFile;
|
|
}
|
|
|
|
$debug('file exists');
|
|
$mimeTypes = [
|
|
'css' => 'text/css',
|
|
'js' => 'application/javascript',
|
|
'jpg' => 'image/jpg',
|
|
'png' => 'image/png',
|
|
'gif' => 'image/gif',
|
|
'svg' => 'image/svg+xml',
|
|
'map' => 'application/json',
|
|
'woff' => 'application/x-woff',
|
|
'woff2' => 'application/font-woff2',
|
|
'html' => 'text/html',
|
|
];
|
|
|
|
if (isset($mimeTypes[$ext])) {
|
|
header("Content-Type: $mimeTypes[$ext]");
|
|
}
|
|
readfile($file);
|
|
return;
|
|
} else {
|
|
$debug('file does not exist');
|
|
if (strpos($route, 'static/') === 0) {
|
|
$route = preg_replace('#static/#', '', $route, 1);
|
|
$_GET['resource'] = $route;
|
|
$debug("static: $route");
|
|
include($magentoPackagePubDir.'/static.php');
|
|
exit;
|
|
} elseif (strpos($route, 'media/') === 0) {
|
|
$debug("media: $route");
|
|
include($magentoPackagePubDir.'/get.php');
|
|
exit;
|
|
}
|
|
}
|
|
} else {
|
|
$debug("thunk to index in $route");
|
|
include($magentoPackagePubDir.'/index.php');
|
|
}
|
|
}
|