2015-03-23 10 views
10

में एक स्थिर फ़ोल्डर में कैसे रूट करें मेरे पास एक फ़ोल्डर है जिसे मैंने अपनी Laravel साइट में/सार्वजनिक फ़ोल्डर में रखा है। मार्ग है:लार्वेल

/public/test 

"परीक्षण" फ़ोल्डर एक फ़ाइल है कि index.html कहा जाता है सिर्फ एक स्थिर संसाधन मैं (मैं इस के भीतर के लिए एक दृश्य बनाने के लिए नहीं करना चाहते हैं सार्वजनिक फ़ोल्डर से लोड करना चाहते है ढांचा - व्याख्या करने के लिए बहुत कुछ)।

मैं इस तरह एक मार्ग बनाया है:

Route::get('/test', function() { 
    return File::get(public_path() . '/test/index.html'); 
}); 

मैं इस काम करने के लिए प्राप्त करने में सक्षम नहीं हूँ। मुझे क्रोम से एक त्रुटि मिल रही है कि इस पृष्ठ में रीडायरेक्ट लूप है।

मैं इसे इस तरह से उपयोग कर सकते हैं:

http://www.example.com/test/index.html 

लेकिन मैं .html एक्सटेंशन कहीं भी उपयोग नहीं कर सकते। फ़ाइल दिखाई अनुसार होने चाहिए:

http://www.example.com/test/ 

मैं .html एक्सटेंशन का उपयोग किए बिना Laravel सार्वजनिक फ़ोल्डर से एक HTML पेज सेवा कर सकते हैं कैसे?

उत्तर

8

से पहले इस समस्या का सामना करने के लिए, एक गंदा थोड़ा चाल के रूप में इस्तेमाल के लिए, आप कुछ और करने के लिए परीक्षण फ़ोल्डर का नाम बदलने सकता है तो

return File::get(public_path() . '/to new folder name/index.html'); 

कुंजी अद्यतन सार्वजनिक

में अपने फ़ोल्डर के साथ अपने मार्ग यूआरएल के बीच कोई विवाद है
+0

यह काम किया। जैसा कि आपने कहा था, कुंजी यह सुनिश्चित कर रही है कि सार्वजनिक मार्ग में आपका मार्ग पथ और पथ (फ़ोल्डर) प्रत्येक के अलग-अलग नाम हों। सहायता के लिए धन्यवाद! – ChiCgi

2

उपयोग:

return Redirect::to('/test/index'); 

या तो समारोह में अपने मार्गों फ़ाइल में या एक नियंत्रक के अंदर।

+1

यह काम नहीं किया। मुझे अभी भी रीडायरेक्ट लूप त्रुटि मिलती है। – ChiCgi

2

एक स्थिर फ़ाइल के लिए, मुझे लगता है कि आप लार्वेल के माध्यम से इसे सेवा देने वाले संसाधनों को बर्बाद कर रहे हैं।

public के भीतर फ़ाइलों/फ़ोल्डरों तक पहुंचने का प्रयास करते समय अतीत में अनंत रीडायरेक्ट बनाने में कुछ बगियां हुई हैं, लेकिन मुझे लगता है कि नवीनतम। Htaccess जो लैरावेल के साथ आता है, इन्हें हल किया गया है (कम से कम अपाचे पर)। यह इस

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 

संदेश है 'अनुरोध एक मौजूदा फ़ोल्डर के लिए नहीं है, तो स्लैश पट्टी अगर वहाँ एक है की तरह लग रहा है। अगर अनुरोध किसी मौजूदा फ़ोल्डर या मौजूदा फ़ाइल के लिए नहीं है, तो लैरवेल की index.php '

मैंने फिर उपनिर्देशिका के भीतर एक .htaccess फ़ाइल को जोड़ा ताकि यह सुनिश्चित किया जा सके कि DirectoryIndex सेट है ताकि index.html लोड हो जाए निर्देशिका के लिए अनुरोध पर डिफ़ॉल्ट रूप से।