2015-04-16 20 views
26

में कहीं भी index.php स्ट्रिंग के लिए "सुन" है मैं मार्गों (ज्यादातर लापता/गलत "पृष्ठों के लिए") के रूप में अच्छी तरह से की स्थापना के रूप में एक कस्टम 404 पृष्ठ के साथ एक Laravel 5 परियोजना है।Laravel यूआरएल

तो बुनियादी तौर पर अगर मैं खुला किसी भी मौजूदा मार्ग मैं सही उत्पादन हो और हर दूसरे यूआरएल 404 दिखा रहा है:

  • project.com/login - ठीक है, प्रवेश पृष्ठ

  • project.com/ghdkfgl - 404

यह स्पष्ट दिखता है और अपेक्षा के अनुसार काम कर रहा प्रतीत होता है। तो स्लैश के बाद जो कुछ भी मैं जोड़ता हूं वह या तो वास्तविक मौजूदा पृष्ठ या 404 पृष्ठ खुलता है।

जब तक मैं एक 'index.php' URL में कहीं भी डाल दिया। इस मामले में, Laravel इस तरह किसी कारण से अनुरोध निष्पादित किया जाता है:

  • project.com/jhdfkds/index.php/login - प्रवेश पृष्ठ खोलता है (सीएसएस और अन्य संसाधनों क्योंकि रास्तों में से चले गए हैं लेकिन यह है कि स्पष्ट है)।

  • project.com/kfhjdsg/index.php/fkdhsg - 404 खोलता है (लेकिन सीएसएस और अन्य संसाधन भी लोड नहीं होते हैं)।

मुझे यकीन है कि इनमें से दोनों को 404 खोलना चाहिए क्योंकि मेरे प्रोजेक्ट में ऐसे कोई मार्ग नहीं हैं।

मैं भी Laravel प्रलेखन वेबसाइट पर समान व्यवहार के लिए जाँच की (मैं Laravel पर इसकी बनाया मान)।

रूप में एक ही क्या कारण हो सकता है इस? यह कैसे हल किया जा सकता है?

क्यों Laravel भी विचार करेगा यूआरएल के बीच में 'index.php'?

क्या इसका .htaccess फ़ाइल के साथ कुछ लेना देना है? (मैं इसे हालांकि संपादित नहीं किया था)

+0

आप अपाचे या nginx का उपयोग कर रहे हैं? – ArjanSchouten

+0

वास्तव में दोनों। मैं एक MAMP (अपाचे के साथ) nginx पर – MaGnetas

+0

एक ही मुद्दा यहाँ हमारे देव और उत्पादन सर्वर पर अपने स्थानीय मशीन और nginx पर चल रहे हैं –

उत्तर

16

समस्या Symfony Request वर्ग के अंदर है और यह कैसे बुनियादी URL निर्धारित करता है। मूल रूप से यह मानता है कि आप aaa/index.php है कि आपके वर्तमान में चल रहे लिपि (index.php नाम) की तरह एक अनुरोध है अगर aaa/index.php बेस URL की तरह लेता निर्देशिका aaa के अंदर है।
बाद में इसे वास्तविक अनुरोध यूआरआई से हटा दिया जाएगा।

मैं एक pull request समीक्षा हो रही है कि के साथ इस अवांछित व्यवहार तय की। जैसे ही यह विलय हो जाता है, मैं इस पोस्ट को अपडेट कर दूंगा।

+0

धन्यवाद, लुकास। मैं इस मुद्दे को देख रहा हूं और पुल अनुरोध देखा। उम्मीद है कि फिक्स अगले लैरवेल अपडेट में शामिल किया जाएगा। – MaGnetas

+0

मैं वहाँ तक अपना समाधान ढांचे का हिस्सा बन जाएगा प्रतीक्षा करने के लिए कोई कारण नहीं है लगता है। बहुत बहुत धन्यवाद। – MaGnetas

-1

एक ही मुद्दा मैं laravel 3 में सामना कर रहा था जब मैं यूआरएल से सार्वजनिक लंघन किया गया था। तो मैंने सार्वजनिक फ़ोल्डर में एक और htaccess फ़ाइल रखा है।

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

आपके उत्तर के लिए धन्यवाद। इससे मेरी मदद नहीं हुई। इसके अलावा यह शायद nginx पर काम नहीं किया होता। – MaGnetas

+0

यदि आप अपने मार्गों के साथ ठीक हैं तो आपको अपनी रूट एचटीएसीएसी की जांच करनी होगी। – khaliq

+0

लेकिन यह लार्वा दस्तावेज पृष्ठों में भी होता है। और htaccess केवल अपाचे सर्वर के लिए है जो मुझे लगता है। – MaGnetas