मैं इस तरह यूआरएल को फिर से लिखने के लिए mod_rewrite का उपयोग कर रहा हूं:
http://example.com/1,2,3,4/foo/
ऐसा करने से .htaccess में:
RewriteEngine On
RewriteRule ^([\d,]+)/foo/$ /foo.php?id=$1 [L,QSA]
यह ठीक काम करता है, सिवाय इसके जब "1,2,3,4" 255 वर्णों से अधिक लंबे स्ट्रिंग में बदल जाता है, तो अपाचे "403 निषिद्ध" देता है।
foo.php?id=1,2,3,4
बहुत लंबी आईडी स्ट्रिंग के साथ भी सीधे आने में कोई समस्या नहीं है , हालांकि यह मेरे लिए कोई विकल्प नहीं है।
क्या कुछ अपाचे या अन्य सेटिंग हैं जिन्हें मुझे ट्वीक करना चाहिए?
अद्यतन : मैंने RewriteLogLevel 9 के साथ RewriteLog चालू किया। एक छोटी आईडी स्ट्रिंग के साथ, मुझे अपनी लॉग फ़ाइल में कई पंक्तियाँ मिलती हैं। लेकिन जब आईडी स्ट्रिंग 255 से अधिक है।, कुछ भी लॉग नहीं किया गया है (ऐसा लगता है जैसे mod_rewrite भी निष्पादित नहीं कर रहा है?)।
यदि आपको यह प्रश्न रोचक / सहायक लगे, तो कृपया इसे लाइक करें।
RewriteLog
और RewriteLogLevel
इसलिए आप देख सकते हैं कि क्या मिलान किया जा रहा है और यह वास्तव में कैसे लिखा जा रहा है। मुझे लगता है कि केवल 255 वर्णों की प्रतिलिपि बनाई जा रही है $1
, और यह समाप्त हो रहा है id
कि ग्राहक देखने के लिए अधिकृत नहीं है, इसलिए अपाचे 403 लौटाता है। मैंने कोड को नहीं देखा है, लेकिन यह हो सकता है कि अपाचे हेरफेर करता है एक निश्चित 256-बाइट बफर (256 वां समाप्त NULL के लिए आरक्षित है) में पश्चगामी।