]> CyberLeo.Net >> Repos - Github/YOURLS.git/blob - yourls-loader.php
Handle inexistent "/robots.txt" requests
[Github/YOURLS.git] / yourls-loader.php
1 <?php\r
2 // Handle inexistent root favicon requests and exit\r
3 if ( '/favicon.ico' == $_SERVER['REQUEST_URI'] ) {\r
4         header( 'Content-Type: image/gif' );\r
5         echo base64_decode( "R0lGODlhEAAQAJECAAAAzFZWzP///wAAACH5BAEAAAIALAAAAAAQABAAAAIplI+py+0PUQAgSGoNQFt0LWTVOE6GuX1H6onTVHaW2tEHnJ1YxPc+UwAAOw==" );\r
6         exit;\r
7 }\r
8 \r
9 // Handle inexistent root robots.txt requests and exit\r
10 if ( '/robots.txt' == $_SERVER['REQUEST_URI'] ) {\r
11         header( 'Content-Type: text/plain; charset=utf-8' );\r
12         echo "User-agent: *\n";\r
13         echo "Disallow:\n";\r
14         exit;\r
15 }\r
16 \r
17 // Start YOURLS\r
18 require_once( dirname( __FILE__ ) . ' /includes/load-yourls.php' );\r
19 \r
20 // Get request in YOURLS base (eg in 'http://site.com/yourls/abcd' get 'abdc')\r
21 $request = yourls_get_request();\r
22 \r
23 // Make valid regexp pattern from authorized charset in keywords\r
24 $pattern = yourls_make_regexp_pattern( yourls_get_shorturl_charset() );\r
25 \r
26 // Now load required template and exit\r
27 \r
28 yourls_do_action( 'pre_load_template', $request );\r
29 \r
30 // At this point, $request is not sanitized. Sanitize in loaded template.\r
31 \r
32 // Redirection:\r
33 if( preg_match( "@^([$pattern]+)/?$@", $request, $matches ) ) {\r
34         $keyword = isset( $matches[1] ) ? $matches[1] : '';\r
35         $keyword = yourls_sanitize_keyword( $keyword );\r
36         yourls_do_action( 'load_template_go', $keyword );\r
37         include( YOURLS_ABSPATH.'/yourls-go.php' );\r
38         exit;\r
39 }\r
40 \r
41 // Stats:\r
42 if( preg_match( "@^([$pattern]+)\+(all)?/?$@", $request, $matches ) ) {\r
43         $keyword = isset( $matches[1] ) ? $matches[1] : '';\r
44         $keyword = yourls_sanitize_keyword( $keyword );\r
45         $aggregate = isset( $matches[2] ) ? (bool)$matches[2] && yourls_allow_duplicate_longurls() : false;\r
46         yourls_do_action( 'load_template_infos', $keyword );\r
47         include( YOURLS_ABSPATH.'/yourls-infos.php' );\r
48         exit;\r
49 }\r
50 \r
51 // Prefix-n-Shorten sends to bookmarklet (doesn't work on Windows)\r
52 if( preg_match( "@^[a-zA-Z]+://.+@", $request, $matches ) ) {\r
53         $url = yourls_sanitize_url( $matches[0] );\r
54         yourls_do_action( 'load_template_redirect_admin', $url );\r
55         yourls_redirect( yourls_admin_url('index.php').'?u='.rawurlencode( $url ), 302 );\r
56         exit;\r
57 }\r
58 \r
59 // Past this point this is a request the loader could not understand\r
60 yourls_do_action( 'loader_failed', $request );\r
61 yourls_redirect( YOURLS_SITE, 302 );\r
62 exit;