2011-09-23 13 views
7

यदि मैं हर एक को मौजूदा यूआरएल को पकड़ना चाहता हूं जो मेरे वेब एप्लिकेशन पर पास किया गया था और 404 की सेवा किए बिना उन्हें एक दृश्य प्रदान करता है, तो मैं यह कैसे करूँगा?कैच-ऑल कंट्रोलर/रूट

अनिवार्य रूप से मुझे इन हिट के आधार पर आंकड़े रिकॉर्ड करने की आवश्यकता है, लेकिन मुझे सामग्री की सेवा करके इसे 404 त्रुटि नहीं करना है।

जहां तक ​​मेरा application/config/routes.php से बता सकते हैं, मैं

$route['default_controller'] = 'catchall'; 

इस्तेमाल कर सकते हैं, लेकिन मैं जरूरत मेरे वास्तविक वेब अनुप्रयोग के लिए कि।

मैं भी

$route['404_override'] = 'catchall'; 

इस्तेमाल कर सकते हैं, लेकिन मैं 404 फेंकने के लिए नहीं करना चाहती।

मैं

$route['(:any)'] = '$1'; 

उपयोग करने की कोशिश, लेकिन मैं पूरे यूआरएल (खंडों की जैसे कोई भी अवधि) ही नहीं, प्रथम खंड रिकॉर्ड करने के लिए की जरूरत है।

उत्तर

6

$route['(:any)'] = 'catchall_controller' का उपयोग करें। फिर अपने नियंत्रक में आप $this->uri->segment(n) का उपयोग कर यूआरआई सेगमेंट तक पहुंच सकते हैं।

+3

मुझे आश्चर्य है कि यह चुना गया उत्तर क्यों है, यह सभी मान्य यूआरएल को पकड़ने वाले नियंत्रक को भी रूट करता है .. !! –

+0

@ClainDsilva नहीं यदि यह मार्ग आखिरी बार रखा गया है। यह अभी भी कुछ है जिसे किसी टिप्पणी की आवश्यकता होगी जिसमें किसी ने मार्ग फ़ाइल को पुनर्गठित करने का प्रयास किया था। – Goose

0

मुझे कोडिनेटर और सामान्य PHP के बीच का अंतर नहीं पता है, लेकिन सामान्य PHP में, आप htaccess को संपादित कर सकते हैं या कस्टम 404 पृष्ठ को परिभाषित करने के लिए जो कुछ भी कर सकते हैं।

कस्टम 404 पेज में, इसके बराबर कुछ करें: $ अनुरोध किया गया = $ _ सर्वर ['REQUEST_URI'];

यूआरएल जो अनुरोध किया गया था प्राप्त करने के लिए .... अपने से निपटने कर ... और इस 404 खाली करने के लिए है:

हैडर ("HTTP/1.1 200 OK"); शीर्षलेख ("स्थिति: 200 ठीक");

फिर, अपना एचटीएमएल या जो कुछ भी आप सेवा करना चाहते हैं उसे शामिल करें।

+0

आशा है कि अब आप कोडिनेटर समझ लेंगे। –

1

क्या आपने अलग-अलग हिस्सों के लिए सभी मार्गों को कई पकड़ने की कोशिश की है?

$route['(:any)'] = '$1'; 
$route['(:any)/(:any)'] = '$1/$2'; 
$route['(:any)/(:any)/(:any)'] = '$1/$2/$3'; 

मुझे लगता है कि यह काम करेगा, लेकिन ऐसा करने का एक और शानदार तरीका हो सकता है।

+0

'(। +)' के बारे में क्या? –