2009-06-13 3 views
5

Ich bin mir nicht sicher, wie man eine Mod-Neuschreiben für eine modulare MVC-Struktur. Was ich will, geschehen ist die URL erfasst:Einfache MVC mod-rewrite

http://domainname.com/index.php?model= {model}&view={view}&parameters={parameters}

HINWEIS: Parameter in einer bestimmten Reihenfolge und durch Rohre getrennt werden (es sei denn es einen besseren Weg ist): Parameter = param1 | param2 | param3

http://domainname.com/ {model}/{view}/{parameters}

Beispiel:

http://domainname.com/faq/edit/13

Ein weiteres Beispiel:

http://domainname.com/faq/index/ {sort}/{page}/{search} http://domainname.com/faq/index/asc/3/How+to

Im Wesentlichen alles nach dem Vorbild und Sicht Willen und Parameter sein kann; so viele wie nötig. Für jede Ansicht werde ich die möglichen Parameter kennen, die zulässig sind und in welcher Reihenfolge.

Vielen Dank im Voraus.

-

den Code dieses zu verwenden ist, was ich habe:

 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*) index.php?model=$1&view=$2&parameters=$3 [L,NS] 

URL: http://localhost:8888/testing/faq/index/asc/5/How+to
PHP $ _GET Variablen:

 
Array 
(
    [model] => faq/index/asc 
    [view] => 5 
    [parameters] => How to 
) 

werden sollten:

Bitte helfen

+1

Die (. *) Sind gierig (d. H. Sie erstrecken sich so weit wie möglich). In diesem Fall müssen Sie (. *?) Für die ersten beiden verwenden. Es gibt dir RewriteRule^(. *?)/(. *?)/(. *) $ Index.php? Modell = $ 1 & Sicht = $ 2 & Parameter = $ 3 [L, NS] –

Antwort

11

Sie könnten eine PHP-Funktion verwenden, um das zu tun. Schnell, ohne Standardwert oder die Fehlerbehandlung:

list($controller, $function, $params) = explode('/', $uri, 3); 
$params = explode('/', $uri); 

Und in der .htaccess umleiten jede nicht vorhandene Abfrage auf Ihre PHP-Abfrage-Handling-Datei:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ mvc.php [L,NS] 

Passen Sie Ihre Eingabe zwar filtern nicht zu enthalten, eine beliebige Datei, usw.

3

Sie auch Ihre .htaccess wie diese haben könnte:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*) mvc.php?model=$1&view=$2&parameters=$3 [L,NS] 

Dies ist nur eine andere Art, es zu tun, obwohl ich persönlich den Weg von streetpc bevorzuge.

+0

Hey, danke, dass du zu mir zurückkommst so schnell. Ich habe meine Frage so bearbeitet, dass sie meinen getesteten Code enthält, den ich von dem, was Sie mir gegeben haben, modifiziert habe. Fast da, braucht nur ein paar Feinabstimmungen. Vielen Dank. – Torez