2010-12-04 17 views
5

staram się zrobić to tak:Making parametry GET PHP wyglądać katalogów

http://foo.foo/?parameter=value "nawróconych" na http://foo.foo/value

Dzięki.

+2

Google -> .htaccess mod_rewrite + poradnik. – sberry

+0

Proszę podać swój serwer WWW, ponieważ jest to pytanie serwera sieciowego * nie * pytanie o PHP. Jeśli używasz usług IIS, możesz zobaczyć ten link w celu uzyskania informacji (ponieważ wszyscy inni udostępniają informacje o mod_rewrite) - http://www.iis.net/download/urlrewrite –

Odpowiedz

3

Zakładając używasz na Apache, ten kod w pliku .htaccess działa dla mnie:

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

zależności od struktury witryny może być reklamą kilka zasad, choć.

0

Użyj reguł przepisywania modów, jeśli używasz Apache. To jest lepszy i bezpieczny sposób tworzenia katalogu wirtualnego.

1

Włączanie mod_rewrite na serwerze Apache i używanie reguł .htaccess do przekierowywania żądań do pliku kontrolera.

.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); 

Dostęp wyjście url http://localhost/abc/123/def/456 będzie następujący:

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