2009-06-13 8 views
5

मुझे यकीन नहीं है कि मॉड्यूलर एमवीसी संरचना के लिए एक मॉड-रीराइट कैसे करें। क्या मैं क्या करना चाहते यूआरएल कैप्चर करता है:सरल एमवीसी मॉड-रीराइट

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

नोट: मापदंडों एक विशेष क्रम में हो सकता है और पाइप से अलग कर दिया जाएगा (जब तक वहाँ एक बेहतर तरीका है): मापदंडों = param1 | param2 | param3

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

उदाहरण:

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

एक और उदाहरण:

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

अनिवार्य रूप से करने के बाद मॉडल और देखने इच्छा कुछ भी हो सकता है और मानकों; जितना आवश्यक हो उतना। प्रत्येक दृश्य के लिए मैं उन संभावित मानकों को जानूंगा जो क्षेत्र स्वीकार्य है और किस क्रम में।

अग्रिम धन्यवाद।

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

यूआरएल:: http://localhost:8888/testing/faq/index/asc/5/How+to
पीएचपी $ _GET चर:

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

होना चाहिए: -

इस नीचे दिए गए कोड का उपयोग मैं क्या है

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

कृपया

+1

(। *) लालची हैं (यानी वे जितना संभव हो उतना विस्तार करते हैं)। इस मामले में, आपको पहले दो के लिए (। *?) का उपयोग करना होगा। यह आपको रिवाइट्रूल^(। *?)/(। *?)/(। *) $ Index.php? मॉडल = $ 1 और देखें = $ 2 और पैरामीटर = $ 3 [एल, एनएस] –

उत्तर

11

आप ऐसा करने के लिए एक PHP फ़ंक्शन का उपयोग कर सकते हैं। जल्दी, कोई डिफ़ॉल्ट मान या त्रुटि हैंडलिंग के साथ:

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

और .htaccess में, किसी भी गैर-मौजूद क्वेरी अपने PHP क्वेरी से निपटने फ़ाइल को अनुप्रेषित:

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

अपने इनपुट फिल्टर करने के लिए हालांकि खबरदार , किसी भी फाइल, आदि

3

शामिल करने के लिए नहीं आप भी इस तरह अपने htaccess हो सकता है:

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

यह करने का यह एक और तरीका है, हालांकि व्यक्तिगत रूप से मैं स्ट्रीटपीसी के रास्ते को पसंद करता हूं।

+0

अरे, मुझे वापस आने के लिए धन्यवाद इतनी जल्दी। मैंने अपने प्रश्न को संपादित करने के लिए अपना प्रश्न संपादित किया है जिसे मैंने आपके द्वारा प्रदान की गई चीज़ों से संशोधित किया है। लगभग वहां, बस कुछ tweaking की जरूरत है। धन्यवाद। – Torez