2016-02-11 4 views
10

सही तरीके से कैसे रूट करें I अक्टूबर सीएमएस रूटिंग (https://octobercms.com/docs/plugin/registration#routing-initialization) के लिए प्रलेखन की समीक्षा कर रहा हूं, लेकिन मुझे लगता है कि मुझे कुछ याद आ रहा है। मेरे पास 'डील' नामक एक पृष्ठ है जो प्लगइन (जिसे 'डील' कहा जाता है) के साथ कुछ बुनियादी जानकारी प्रदान करता है। पेज सामान्य रूप से यूआरएल में दिखाई देता है:अक्टूबर सीएमएस -

http://www.example.com/deals 

हालांकि, मैं एक मार्ग बनाने के लिए चाहते हैं, ताकि अगर किसी को यूआरएल का दौरा:

http://www.example.com/deals2 

यह स्वचालित रूप से उन्हें वापस

http://www.example.com/deals 
करने के लिए मार्ग

मुझे पता है कि मुझे अपनी प्लगइन निर्देशिका में routes.php फ़ाइल बनाना चाहिए। हालांकि, जब मैं

Route::get('/deals2', function() 
{ 
     return View::make('deals'); 
}); 

का उपयोग करने का प्रयास करता है तो यह शिकायत करता है कि इसे 'सौदों' दृश्य नहीं मिल रहा है। मैं क्या गलत कर रहा हूं?

साथ ही, मैं कैसे मार्ग यह इतना है कि मेरा मुखपृष्ठ

http://www.example.com 

होगा

http://www.example.com/deals 
+0

अगर यह मदद करता है मिल जाएगा, मैं घर के लिए एक 'गंदा' वैकल्पिक हल के लिए इस्तेमाल किया पेज बनाई गई साइट पर रीडायरेक्ट करें। इसे अपनी .htaccess फ़ाइल में जोड़ें: 'रिवाइट्रूल^/? $ Http://www.example.com/deals [आर = 301, एनसी, एल] ' आप अन्य यूआरएल के समान ही कर सकते हैं जिसे आप रीडायरेक्ट करना चाहते हैं, लेकिन फिर, यह सिर्फ एक कामकाज है जिसका इस्तेमाल मैंने किया क्योंकि मुझे नहीं पता कि यह कैसे ठीक से करें .... इसलिए वास्तव में कोई जवाब नहीं है। – merodeador

+0

यह एक अच्छा हैक है, लेकिन मुझे उम्मीद है कि इसके लिए एक निर्मित विधि होगी। टिप्पणी के लिए धन्यवाद। – user2694306

+0

क्या आप विशेष रूप से '/ deals2' को रीडायरेक्ट करने की कोशिश कर रहे हैं, या किसी भी मार्ग जैसे '/ सौदों [कुछ-संख्या]'? – BrokenBinary

उत्तर

9

OctoberCMS में, और Laravel जो इसे पर आधारित है, एक से दूसरे मार्ग रीडायरेक्ट करने के लिए आप यह कर सकते हैं:

// Redirect /deals2, /deals3, ... to /deals 
Route::get('{dealSlug}', function($dealSlug) { 
    return redirect('deals'); 
})->where('dealSlug', '^deals[0-9]+'); 

// Redirect homepage to /deals 
Route::get('/', function() { 
    return redirect('deals'); 
} 

पहले मार्ग एक regex constraint के साथ एक मार्ग पैरामीटर का उपयोग करता है और किसी भी अनुरोध रीडायरेक्ट करेगा कि /deals से शुरू होता है और आपके /deals मार्ग पर किसी संख्या के साथ समाप्त होता है। इसका मतलब है कि यह /deals1, /deals2, /deals3, आदि /deals पर रूट करेगा।

दूसरा मार्ग आपके मुखपृष्ठ को /deals पर रीडायरेक्ट करेगा।

बेशक, पुनर्निर्देशन के लिए एक अतिरिक्त अनुरोध खर्च होगा। यदि आप ऐसा नहीं करना चाहते हैं, तो आप अपाचे या Nginx में रीडायरेक्ट कर सकते हैं।

आपकी टिप्पणी के अनुसार, यदि आप /deals[any-number]/[anything] से /deals/[that-same-anything] पर रीडायरेक्ट करना चाहते हैं तो आप पहले मार्ग पर optional route parameter जोड़ देंगे। यही कारण है कि इस प्रकार दिखाई देगा:

// The new first route 
Route::get('{dealSlug}/{extra?}', function($dealSlug, $extra = '') { 
    return redirect('deals/' . $extra); 
})->where('dealSlug', '^deals[0-9]+'); 
बेशक

, अगर है कि /deals/[anything] मार्ग मौजूद नहीं है, तो आप एक 404.

+0

यह बहुत अच्छा काम किया, धन्यवाद। एक प्रश्न, आप पहले रीडायरेक्ट को कैसे समायोजित करेंगे ताकि यह अतिरिक्त यूआरएल सेगमेंट (जैसे/डील 2/सीए-टोरंटो/डील/सीए-टोरंटो) पर काम करेगा? – user2694306

1

के लिए रास्ते का प्रयास कर सकते हैं Route::get('/deals2', function(){return Redirect::to('/deals')}); जो एक अतिरिक्त अनुरोध की कीमत पर ब्राउज़र रीडायरेक्ट करेगा।

संबंधित मुद्दे