2013-02-13 2 views
0

CODE:

.htaccess:

RewriteEngine On 
RewriteRule ^(.*)/*$ base.php?request=$1 [NC,L] 

base.php

<?php 
    echo "this is base.php <br/> and Get Vaiables <br> "; 
    print_r($_GET); 
?> 

pour la demande:

localhost/blahblahproject/hello 

RÉSULTAT PRÉVU:

c'est base.php
et obtenir Vaiables
Array ([demande] => bonjour)

actuelle RÉSULTAT:

c'est base.php
et obtenir Vaiables
Array ([demande] => base.php)

+0

essayer 'RewriteRule^(. *) /base.php?request=$1 $ [QSA, L]' Je ne comprends pas votre part '/ *' .. –

+0

si l'utilisateur tape localhost/blahblahproject/bonjour //////// ou au moins localhost/blahblahproject/hello/ – user2067797

Répondre

0

.htaccess redirige uniquement URL pour votre parametre. Pour récupérer la valeur de l'URL, utilisez parse_url ou une commande similaire.

J'ai une fonction comme celui-ci pour faire le travail:

/** 
* Sets current request url 
*/ 
private function setUrl() { 
    $path = parse_url($_SERVER[ 'REQUEST_URI' ], PHP_URL_PATH); 
    $pathTrimmed = trim($path, '/'); 
    $pathTokens = explode('/', $pathTrimmed); 

    if (substr($path, -1) !== '/') { 
     array_pop($pathTokens); 
    } 

    $url = end($pathTokens); 

    $this -> url = $url; 
} 
0

Si vous êtes intéressé par la chaîne après le dernier «/», changer votre fichier .htaccess à:

RewriteEngine On 
RewriteRule ^.*/(.*)$ base.php?request=$1 [NC,L] 
1

changer votre règle .htaccess à ceci:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/?$ /base.php?request=$1 [QSA,L] 
+0

Merci pour l'entrée ... QSA fonctionne mais je ne sais pas pourquoi ça marche si vous pouviez me dire comment cela fonctionne, je serai reconnaissant. – user2067797

+0

QSA est pour Query String Append. Voir ce https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html pour plus de détails. – anubhava