mod_rewrite के लिए url 257 वर्णों की अधिकतम लंबाई?


12

मेरी url योजना /foo/var1-var2-var3...bar है

मैं इन mod_rewrite नियमों का उपयोग कर रहा हूं:

RewriteBase /foo/
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^ index.php [PT,L]

यदि स्ट्रिंग की लंबाई 'var1-var2 ...' 257 वर्णों से अधिक है, तो एक त्रुटि 403 निषिद्ध और एक 404 लौटा दी जाती है। हालांकि, अगर 'var1-var2 ...' की लंबाई 257 अक्षर या उससे कम है और बाद में स्लैश के बाद शेष url की लंबाई किसी भी लंबाई हो सकती है। कोई इस सीमा को कैसे पार करता है?

जवाबों:


12

आप अंतर्निहित फ़ाइल सिस्टम की सीमा में चल रहे हैं।

फाइल सिस्टम लिमिट पर एक नजर । आप देखेंगे कि अधिकतम 255 बाइट्स की अधिकतम फ़ाइल नाम लंबाई है। इस प्रकार, जब अपाचे और / या आपका पुनर्लेखन नियम जांचता है कि क्या फाइल मौजूद है, तो ऑपरेटिंग सिस्टम द्वारा अपाचे में एक त्रुटि वापस आ जाती है।

अपाचे के साथ, यदि आप .htaccess फ़ाइल में इस तरह के नियम डालते हैं, तो समस्या के आसपास काम करने में बहुत देर हो चुकी है। अपाचे ने पहले से ही लंबे फाइलनाम को स्टेट करने का प्रयास किया होगा, इस प्रकार फाइल सिस्टम एरर '(36) फाइल नेम लॉन्ग' को फेंक दिया, जिससे 403 एरर वापस आ गया।

मुझे दो विकल्प दिखाई देते हैं:

  1. अपने एप्लिकेशन के URL प्रारूप को प्रत्येक स्लैश के बीच अधिकतम 255 वर्णों में बदलें।
  2. Apache वर्चुअल होस्ट कॉन्फिगर में रिवर्ट नियमों को ले जाएँ और REQUEST_FILENAME को हटा दें।

यदि .htaccess फ़ाइल में {REQUEST_FILENAME} शामिल नहीं है, लेकिन फिर भी 403 लौटा रहा है, तो क्या यह अभी भी समस्या हो सकती है? ( serverfault.com/questions/140852/… )
दार्शनिको

1
आपको अपाचे कॉन्फिगर में फिर से लिखना होगा । यह कार्यक्षमता को बनाए रखने और समस्या के आसपास काम करने का एकमात्र तरीका है।
hwtw1r3

3
जब .htaccess से अपाचे वर्चुअल होस्ट कॉन्फ़िगर करने के नियम चलते हैं, तो आपको %{REQUEST_FILENAME}=> को बदलना होगा %{DOCUMENT_ROOT}%{REQUEST_FILENAME}और अपने URL पैटर्न की शुरुआत में स्लैश भी जोड़ना होगा, जैसे कि RewriteRule ^abc ...लेकिन नहीं RewriteRule ^/abc ...। आपको mod_rewrite की सीधी सादी से प्यार है ...
ash108

2
"रीवाइट नियमों को अपाचे वर्चुअल होस्ट कॉन्फिगर में स्थानांतरित करें" भाग सुनहरा है: यह वास्तव में ठीक से लागू होने पर काम करता है, कई अन्य वर्कअराउंड के विपरीत मैंने कोशिश की है।
ash108
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.