2010-10-17 30 views
0

Fondamentalement, je donne les résultats suivants dans mon fichier .htaccess à la racine de mon site:PHP/Apache: Demande GET n'existe pas?

Options -Indexes 

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA] 
</IfModule> 

Dans mon script PHP quand j'utilise $ _GET [ « itinéraire »] J'obtiens l'erreur suivante:

Notice: Undefined index: route 

Je ne comprends pas pourquoi cela ne fonctionne pas? Je l'ai utilisé ce code dans le passé sur un site Web précédent pour URLs et le script PHP a obtenu la valeur de demande GET bien, mais il semble jouer maintenant:/

Quand je le fais manuellement comme http://localhost/index.php?route=hmm la l'erreur disparaît et je peux obtenir la valeur de $ _GET ['route']

Qu'est-ce que je fais mal? Demandez si vous avez besoin d'information supplémentaire! Merci d'avoir lu.

+0

Essayez un peu de débogage. Que dit print_r ($ _ GET)? Que dit print_r ($ _ SERVER)? – TuomasR

+0

Pouvez-vous montrer un exemple d'URL? Utilisez-vous un framework? –

+0

TuomasR: print_r ($ _ GET) sorties Array() – AlexPriceAP

Répondre

0

J'utilise ceci pour la réécriture (routage) URI:

Options +FollowSymLinks 
IndexIgnore */* 
# Turn on the RewriteEngine 
RewriteEngine On 
# Rules 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

Et parse avec:

class Dispatcher { 
    [snip] 
    private static function parse_uri() { 
     if (self::$uri_parsed === false) { 
      // Clean URI 
      $uri = preg_replace('~|/+$|/(?=/)~', '', $_SERVER['REQUEST_URI']); 

      // Strip get variables from request 
      $get_position = strpos($uri, '?'); 
      if ($get_position !== false) { 
       $striped_get = substr($uri, 0, $get_position); 
      } else { 
       $striped_get = $uri; 
      } 

      // Get the file and directory of the request 
      if (strstr($striped_get, '.') != false) { 
       // Strip the file from the URI 
       $slash_position = strrpos($striped_get, '/'); 
       if ($slash_position !== false) { 
        $striped_file = substr($striped_get, 0, $slash_position + 1); 
       } else { 
        $striped_file = $striped_get; 
       } 
       self::$command = $striped_file; 
       self::$file = substr($striped_get, strlen(self::$command)); 
      } else { 
       self::$command = $striped_get; 
       self::$file = ''; 
      } 
      // Trim slashes and replace dashes with underscores 
      self::$command = str_replace('-', '_', trim(self::$command, '/')); 

      if (DEBUG) { 
       // Log the results 
       Logger::log('Command: '.self::$command, self::LOG_TYPE); 
       Logger::log('File: '.(self::$file ? self::$file : 'N/A'), self::LOG_TYPE); 
      } 

      self::$uri_parsed = true; 
     } 
    } 
    [snip] 
}