* @author Christian Weiske <cweiske@cweiske.de>
* @copyright 2014 Christian Weiske
* @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3
- * @link http://phorkie.sf.net/
+ * @link https://cweiske.de/phorkie.htm
*/
if (!in_array('phar', stream_get_wrappers()) || !class_exists('Phar', false)) {
echo "Phar extension not avaiable\n";
return 'www/index.php';
}
- if (substr($path, -4) == '.css') {
+ $path = rewriteWithHtaccess($path);
+
+ if (substr($path, -4) == '.css'
+ || substr($path, -3) == '.js'
+ || substr($path, 0, 9) == '/phorkie/'
+ ) {
header('Expires: ' . date('r', time() + 86400 * 7));
}
- return $path;
+ return 'www' . $path;
+}
+
+function rewriteWithHtaccess($path)
+{
+ //remove the leading slash /
+ $cpath = substr($path, 1);
+ $bFoundMatch = false;
+ $map = include('phar://' . __FILE__ . '/src/gen-rewritemap.php');
+ foreach ($map as $pattern => $replace) {
+ if (preg_match($pattern, $cpath, $matches)) {
+ $bFoundMatch = true;
+ break;
+ }
+ }
+ if (!$bFoundMatch) {
+ return $path;
+ }
+ $newcpath = preg_replace($pattern, $replace, $cpath);
+ if (strpos($newcpath, '?') === false) {
+ return '/' . $newcpath;
+ }
+ list($cfile, $getParams) = explode('?', $newcpath, 2);
+ if ($getParams != '') {
+ parse_str($getParams, $_GET);
+ }
+ return '/' . $cfile;
}
//Phar::interceptFileFuncs();