| 17 | | // Fetch the rewrite rules. |
|---|
| 18 | | $rewrite = rewrite_rules('matches'); |
|---|
| 19 | | |
|---|
| 20 | | if (! empty($rewrite)) { |
|---|
| 21 | | $pathinfo = $_SERVER['PATH_INFO']; |
|---|
| 22 | | $req_uri = $_SERVER['REQUEST_URI']; |
|---|
| 23 | | $home_path = parse_url(get_settings('home')); |
|---|
| 24 | | $home_path = $home_path['path']; |
|---|
| 25 | | |
|---|
| 26 | | // Trim path info from the end and the leading home path from the |
|---|
| 27 | | // front. For path info requests, this leaves us with the requesting |
|---|
| 28 | | // filename, if any. For 404 requests, this leaves us with the |
|---|
| 29 | | // requested permalink. |
|---|
| 30 | | $req_uri = str_replace($pathinfo, '', $req_uri); |
|---|
| 31 | | $req_uri = str_replace($home_path, '', $req_uri); |
|---|
| 32 | | $req_uri = trim($req_uri, '/'); |
|---|
| 33 | | $pathinfo = trim($pathinfo, '/'); |
|---|
| 34 | | |
|---|
| 35 | | // The requested permalink is in $pathinfo for path info requests and |
|---|
| 36 | | // $req_uri for other requests. |
|---|
| 37 | | if (! empty($pathinfo)) { |
|---|
| 38 | | $request = $pathinfo; |
|---|
| 39 | | } else { |
|---|
| 40 | | $request = $req_uri; |
|---|
| 41 | | } |
|---|
| 42 | | |
|---|
| 43 | | // Look for matches. |
|---|
| 44 | | $request_match = $request; |
|---|
| 45 | | foreach ($rewrite as $match => $query) { |
|---|
| 46 | | // If the requesting file is the anchor of the match, prepend it |
|---|
| 47 | | // to the path info. |
|---|
| | 17 | // If we match a rewrite rule, this will be cleared. |
|---|
| | 18 | $error = '404'; |
|---|
| | 19 | |
|---|
| | 20 | // Fetch the rewrite rules. |
|---|
| | 21 | $rewrite = rewrite_rules('matches'); |
|---|
| | 22 | |
|---|
| | 23 | if (! empty($rewrite)) { |
|---|
| | 24 | $pathinfo = $_SERVER['PATH_INFO']; |
|---|
| | 25 | $req_uri = $_SERVER['REQUEST_URI']; |
|---|
| | 26 | $home_path = parse_url(get_settings('home')); |
|---|
| | 27 | $home_path = $home_path['path']; |
|---|
| | 28 | |
|---|
| | 29 | // Trim path info from the end and the leading home path from the |
|---|
| | 30 | // front. For path info requests, this leaves us with the requesting |
|---|
| | 31 | // filename, if any. For 404 requests, this leaves us with the |
|---|
| | 32 | // requested permalink. |
|---|
| | 33 | $req_uri = str_replace($pathinfo, '', $req_uri); |
|---|
| | 34 | $req_uri = str_replace($home_path, '', $req_uri); |
|---|
| | 35 | $req_uri = trim($req_uri, '/'); |
|---|
| | 36 | $pathinfo = trim($pathinfo, '/'); |
|---|
| | 37 | |
|---|
| | 38 | // The requested permalink is in $pathinfo for path info requests and |
|---|
| | 39 | // $req_uri for other requests. |
|---|
| | 40 | if (! empty($pathinfo)) { |
|---|
| | 41 | $request = $pathinfo; |
|---|
| | 42 | } else { |
|---|
| | 43 | $request = $req_uri; |
|---|
| | 44 | } |
|---|
| | 45 | |
|---|
| | 46 | // Look for matches. |
|---|
| | 47 | $request_match = $request; |
|---|
| | 48 | foreach ($rewrite as $match => $query) { |
|---|
| | 49 | // If the requesting file is the anchor of the match, prepend it |
|---|
| | 50 | // to the path info. |
|---|
| 52 | | if (preg_match("!^$match!", $request_match, $matches)) { |
|---|
| 53 | | // Got a match. |
|---|
| 54 | | // Trim the query of everything up to the '?'. |
|---|
| 55 | | $query = preg_replace("!^.+\?!", '', $query); |
|---|
| 56 | | |
|---|
| 57 | | // Substitute the substring matches into the query. |
|---|
| 58 | | eval("\$query = \"$query\";"); |
|---|
| 59 | | |
|---|
| 60 | | // Parse the query. |
|---|
| 61 | | parse_str($query, $query_vars); |
|---|
| 62 | | |
|---|
| 63 | | // If we're processing a 404 request, clear the error var |
|---|
| 64 | | // since we found something. |
|---|
| 65 | | if (isset($_GET['error'])) { |
|---|
| 66 | | unset($_GET['error']); |
|---|
| 67 | | } |
|---|
| 68 | | |
|---|
| 69 | | if (isset($error)) { |
|---|
| 70 | | unset($error); |
|---|
| 71 | | } |
|---|
| 72 | | |
|---|
| 73 | | break; |
|---|
| 74 | | } |
|---|
| 75 | | } |
|---|
| 76 | | } |
|---|
| 77 | | } |
|---|
| | 55 | if (preg_match("!^$match!", $request_match, $matches)) { |
|---|
| | 56 | // Got a match. |
|---|
| | 57 | // Trim the query of everything up to the '?'. |
|---|
| | 58 | $query = preg_replace("!^.+\?!", '', $query); |
|---|
| | 59 | |
|---|
| | 60 | // Substitute the substring matches into the query. |
|---|
| | 61 | eval("\$query = \"$query\";"); |
|---|
| | 62 | |
|---|
| | 63 | // Parse the query. |
|---|
| | 64 | parse_str($query, $query_vars); |
|---|
| | 65 | |
|---|
| | 66 | // If we're processing a 404 request, clear the error var |
|---|
| | 67 | // since we found something. |
|---|
| | 68 | if (isset($_GET['error'])) { |
|---|
| | 69 | unset($_GET['error']); |
|---|
| | 70 | } |
|---|
| | 71 | |
|---|
| | 72 | if (isset($error)) { |
|---|
| | 73 | unset($error); |
|---|
| | 74 | } |
|---|
| | 75 | |
|---|
| | 76 | break; |
|---|
| | 77 | } |
|---|
| | 78 | } |
|---|
| | 79 | } |
|---|
| | 80 | } |
|---|
| 78 | 81 | |
|---|
| 79 | 82 | $wpvarstoreset = array('m','p','posts','w', 'cat','withcomments','s','search','exact', 'sentence','poststart','postend','preview','debug', 'calendar','page','paged','more','tb', 'pb','author','order','orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'feed', 'author_name', 'static', 'pagename', 'error'); |
|---|