// visit the currently active page $page = ($lang)? $site->visit($path, $lang) : $site->visit($path); // redirections for files and invalid representations if($site->representation !== null) { // get the filename $filename = rawurldecode(basename($path)); $pagepath = dirname($path); // check if there's a page for the parent path if($parent = $site->find($pagepath)) { // check if there's a file for the last element of the path if($file = $parent->file($filename)) { return go($file->url()); } } // prevent invalid representation routes if($site->representation === '' || $site->representation != $page->representation()) { return $site->errorPage(); } } return $page; }; // tinyurl handling $routes['tinyurl'] = $this->component('tinyurl')->route(); // home redirect $routes['homeRedirect'] = array( 'pattern' => $this->options['home'] . '(\..*)?', 'action' => function($extension = null) { // ignore invalid extensions if($extension === '.') $extension = ''; redirect::send(url::build([
/** * Facepalm typo alias * @see csrf() */ function csfr() { return call('csrf', func_get_args()); } /** * Shortcut for call_user_func_array with a better handling of arguments * * @param mixed $function * @param mixed $arguments * @return mixed */ function call($function, $arguments = array()) { if(!is_callable($function)) return false; if(!is_array($arguments)) $arguments = array($arguments); return call_user_func_array($function, $arguments); } /** * Parses yaml structured text * * @param $string * @return array */ function yaml($string) { return yaml::decode($string); } /** * Simple email sender helper * * @param array $params * @return Email */ function email($params = array()) { return new Email($params);
// load all plugins $this->plugins(); // start the router $this->router = new Router($this->routes()); $this->route = $this->router->run(trim($this->path(), '/')); // check for a valid route if(is_null($this->route)) { header::status('500'); header::type('json'); die(json_encode(array( 'status' => 'error', 'message' => 'Invalid route or request method' ))); } // call the router action with all arguments from the pattern $response = call($this->route->action(), $this->route->arguments()); // load all language variables // this can only be loaded once the router action has been called // otherwise the current language is not yet available $this->localize(); // build the response $this->response = $this->component('response')->make($response); // store the current language in the session if( $this->option('language.detect') && $this->site()->multilang() && $this->site()->language() ) { s::set('kirby_language', $this->site()->language()->code()); } return $this->response;
<?php define('DS', DIRECTORY_SEPARATOR); // load kirby require(__DIR__ . DS . 'kirby' . DS . 'bootstrap.php'); // check for a custom site.php if(file_exists(__DIR__ . DS . 'site.php')) { require(__DIR__ . DS . 'site.php'); } else { $kirby = kirby(); } // render echo $kirby->launch();
Key | Value |
Kirby Toolkit | v2.5.12 |
Kirby CMS | v2.5.12 |
Key | Value |
USER | champagndcb |
SCRIPT_NAME | /index.php |
REQUEST_URI | /ups/recettes/recette-f.cossy-eclat-fr.pdf |
QUERY_STRING | |
REQUEST_METHOD | GET |
SERVER_PROTOCOL | HTTP/1.1 |
GATEWAY_INTERFACE | CGI/1.1 |
REDIRECT_URL | /ups/recettes/recette-f.cossy-eclat-fr.pdf |
REMOTE_PORT | 27696 |
SCRIPT_FILENAME | /home/champagndcb/www/index.php |
SERVER_ADMIN | postmaster@champagne-cossy.com |
DOCUMENT_ROOT | /home/champagndcb/www |
REMOTE_ADDR | 54.163.218.81 |
SERVER_PORT | 80 |
SERVER_ADDR | 10.28.20.252 |
SERVER_NAME | champagne-cossy.com |
SERVER_SOFTWARE | Apache |
SERVER_SIGNATURE | |
HTTP_REMOTE_IP | 54.163.218.81 |
HTTP_X_IPLB_UNIQUE_ID | 90D9020C:A824_335BECC1:0050_66066675_A973A:16AC |
HTTP_FORWARDED | for=144.217.2.12; proto=http; host=champagne-cossy.com |
HTTP_X_REMOTE_PROTO | http |
HTTP_X_REMOTE_IP | 144.217.2.12 |
HTTP_X_REMOTE_PORT | 43044 |
HTTP_X_FORWARDED_PORT | 80 |
HTTP_X_VARNISH | 114757857 |
HTTP_ACCEPT_ENCODING | br, gzip |
HTTP_X_SCHEME | http |
HTTP_X_CDN_REQUEST_ID | 115347327 |
HTTP_X_CDN_ANY_IP | 46.105.204.28 |
HTTP_REMOTE_PORT | 40310 |
HTTP_USER_AGENT | claudebot |
HTTP_ACCEPT | */* |
HTTP_X_OVHREQUEST_ID | 668ce2c61c8881e950b550d4e0cb7c1f |
HTTP_X_FORWARDED_PROTO | http |
HTTP_X_FORWARDED_FOR | 54.163.218.81 |
HTTP_X_PREDICTOR | 1 |
HTTP_HOST | champagne-cossy.com |
ENVIRONMENT | production |
CFG_CLUSTER | cluster028 |
SCRIPT_URI | http://champagne-cossy.com/ups/recettes/recette-f.cossy-eclat-fr.pdf |
SCRIPT_URL | /ups/recettes/recette-f.cossy-eclat-fr.pdf |
GEOIP_LONGITUDE | -77.248100 |
GEOIP_LATITUDE | 38.658298 |
GEOIP_AREA_CODE | 0 |
GEOIP_DMA_CODE | 0 |
GEOIP_REGION | VA |
GEOIP_COUNTRY_NAME | United States |
GEOIP_COUNTRY_CODE | US |
UNIQUE_ID | ZgZmdWXQn28y7TqHsJ8PrQAAABI |
REDIRECT_STATUS | 200 |
FCGI_ROLE | RESPONDER |
PHP_SELF | /index.php |
REQUEST_TIME_FLOAT | 1711695477.2403 |
REQUEST_TIME | 1711695477 |
argv | Array ( ) |
argc | 0 |
Key | Value |
USER | champagndcb |
SCRIPT_NAME | /index.php |
REQUEST_URI | /ups/recettes/recette-f.cossy-eclat-fr.pdf |
QUERY_STRING | |
REQUEST_METHOD | GET |
SERVER_PROTOCOL | HTTP/1.1 |
GATEWAY_INTERFACE | CGI/1.1 |
REDIRECT_URL | /ups/recettes/recette-f.cossy-eclat-fr.pdf |
REMOTE_PORT | 27696 |
SCRIPT_FILENAME | /home/champagndcb/www/index.php |
SERVER_ADMIN | postmaster@champagne-cossy.com |
DOCUMENT_ROOT | /home/champagndcb/www |
REMOTE_ADDR | 54.163.218.81 |
SERVER_PORT | 80 |
SERVER_ADDR | 10.28.20.252 |
SERVER_NAME | champagne-cossy.com |
SERVER_SOFTWARE | Apache |
SERVER_SIGNATURE | |
HTTP_REMOTE_IP | 54.163.218.81 |
HTTP_X_IPLB_UNIQUE_ID | 90D9020C:A824_335BECC1:0050_66066675_A973A:16AC |
HTTP_FORWARDED | for=144.217.2.12; proto=http; host=champagne-cossy.com |
HTTP_X_REMOTE_PROTO | http |
HTTP_X_REMOTE_IP | 144.217.2.12 |
HTTP_X_REMOTE_PORT | 43044 |
HTTP_X_FORWARDED_PORT | 80 |
HTTP_X_VARNISH | 114757857 |
HTTP_ACCEPT_ENCODING | br, gzip |
HTTP_X_SCHEME | http |
HTTP_X_CDN_REQUEST_ID | 115347327 |
HTTP_X_CDN_ANY_IP | 46.105.204.28 |
HTTP_REMOTE_PORT | 40310 |
HTTP_USER_AGENT | claudebot |
HTTP_ACCEPT | */* |
HTTP_X_OVHREQUEST_ID | 668ce2c61c8881e950b550d4e0cb7c1f |
HTTP_X_FORWARDED_PROTO | http |
HTTP_X_FORWARDED_FOR | 54.163.218.81 |
HTTP_X_PREDICTOR | 1 |
HTTP_HOST | champagne-cossy.com |
ENVIRONMENT | production |
CFG_CLUSTER | cluster028 |
SCRIPT_URI | http://champagne-cossy.com/ups/recettes/recette-f.cossy-eclat-fr.pdf |
SCRIPT_URL | /ups/recettes/recette-f.cossy-eclat-fr.pdf |
GEOIP_LONGITUDE | -77.248100 |
GEOIP_LATITUDE | 38.658298 |
GEOIP_AREA_CODE | 0 |
GEOIP_DMA_CODE | 0 |
GEOIP_REGION | VA |
GEOIP_COUNTRY_NAME | United States |
GEOIP_COUNTRY_CODE | US |
UNIQUE_ID | ZgZmdWXQn28y7TqHsJ8PrQAAABI |
REDIRECT_STATUS | 200 |
FCGI_ROLE | RESPONDER |
PHP_SELF | /index.php |
REQUEST_TIME_FLOAT | 1711695477.2403 |
REQUEST_TIME | 1711695477 |
argv | Array ( ) |
argc | 0 |