2010-12-04 4 views
5

Ich versuche, es zu machen, so:machen PHP GET-Parameter aussehen wie Verzeichnisse

http://foo.foo/?parameter=value "konvertiert" zu http://foo.foo/value

Dank.

+2

Google -> .htaccess + mod_rewrite Tutorial. – sberry

+0

Bitte geben Sie Ihren Webserver an, da es sich um eine Webserver-Frage * nicht * um eine Frage zu PHP handelt. Wenn Sie IIS verwenden, können Sie diesen Link für Informationen sehen (da alle anderen Informationen zu mod_rewrite teilen) - http://www.iis.net/download/urlrewrite –

Antwort

0

Angenommen, Sie Apache verwenden, sind die folgenden Tutorials episch hilfreich:

  1. .htaccess part one
  2. .htaccess part two

Das zweite Tutorial Ihre Antwort hat. Bereite dich darauf vor, tief in ein Verlies namens mod_rewrite zu graben.

3

Angenommen, Sie auf Apache laufen lassen, funktioniert dieser Code in .htaccess für mich:

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9_-]+)/$ /index.php?parameter=$1 

auf Ihrer Site-Struktur Je Sie aber ein paar Regeln zu Anzeige haben.

0

Verwenden Sie Mod Rewrite-Regeln, wenn Sie Apache verwenden. Dies ist eine bessere und sichere Möglichkeit, ein virtuelles Verzeichnis zu erstellen.

1

Aktivierung von mod_rewrite auf Ihrem Apache-Server und Verwendung von .htaccess Regeln zum Umleiten von Anforderungen an eine Controller-Datei.

.htaccess

# Enable rewrites 
RewriteEngine On 
# The following two lines skip over other HTML/PHP files or resources like CSS, Javascript and image files 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# test.php is our controller file 
RewriteRule ^.*$ test.php [L] 

test.php

$args = explode('/', $_SERVER['REDIRECT_URL']); // REDIRECT_URL is provided by Apache when a URL has been rewritten 
array_shift($args); 
$data = array(); 
for ($i = 0; $i < count($args); $i++) { 
    $k = $args[$i]; 
    $v = ++$i < count($args) ? $args[$i] : null; 
    $data[$k]= $v; 
} 
print_r($data); 

die URL http://localhost/abc/123/def/456 ausgeben wird der folgende Zugriff:

Array 
(
    [abc] => 123 
    [def] => 456 
)