2009-05-24 7 views
0

Ich habe eine Website, die GET-Variablen verwendet, um zu bestimmen, was angezeigt werden soll.Wie überschreibe ich URLs, die GET-Variablen enthalten?

@session_start(); 
@extract($_GET); 
@extract($_POST); 
. 
. 
. 
if (!$menu) { include("home.php"); } 
if ($menu=='buy') { include("buy.php"); } 
if ($menu=='invalidbuy') { include("invalidbuy.php"); } 
if ($menu=='buydone') { include("buydone.php"); } 
. 
. 
. 

Ich glaube, ich Nutzung der .htaccess-Datei zu machen, um meine URLs von „/index.php?menu=faq“ auf „/ faq“ zu umbenennen. Wie kann ich das machen??

+3

Verwendung von Extrakt auf diese Weise ist ziemlich kurzsichtig. Was ist, wenn jemand später einen Parameter hinzufügt, der eine Variable kokidisiert? d. H. Code, der sagt if ($ logged_in) {/ * Eingetragenes Zeug * /} Benutzer geht zu script.php? Logged_in = 1 –

Antwort

1

Sie können folgende rule nutzen jede Anforderung eines Pfades neu zu schreiben wie /foobar intern /index.php?menu=foobar:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^[^/]+$ index.php?menu=$1 [L] 

Die zusätzliche RewriteCond directive stellt sicher, dass nur nicht vorhandene Dateien (!-f) neu geschrieben werden .