Make WordPress Core


Ignore:
Timestamp:
09/19/2004 04:19:16 AM (22 years ago)
Author:
rboren
Message:

If we attempt path info matching but do not match, set 404. Also, retabify some code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-blog-header.php

    r1694 r1697  
    1515    (! empty( $_SERVER['PATH_INFO']))) {
    1616
    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.
    4851            if ((! empty($req_uri)) && (strpos($match, $req_uri) === 0)) {
    4952              $request_match = $req_uri . '/' . $request;
    5053            }
    5154
    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 }
    7881
    7982$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');
Note: See TracChangeset for help on using the changeset viewer.