Changeset 1697

Show
Ignore:
Timestamp:
09/19/04 04:19:16 (4 years ago)
Author:
rboren
Message:

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 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');