প্যারামিটার দৈর্ঘ্যের সাথে পুনরায় লিখিত URL গুলি> 255 কাজ করে না


12

আমি ইউআরএলগুলি পুনরায় লেখার জন্য মোড_উইরাইট ব্যবহার করছি:

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খুব দীর্ঘ আইডি স্ট্রিং সহ এমনকি সরাসরি দেখার কোনও সমস্যা নেই , তবে এটি আমার পক্ষে কোনও বিকল্প নয়।

আমার কি কিছু অ্যাপাচি বা অন্য সেটিং মুছে ফেলা উচিত?

আপডেট : আমি রাইরাইটলগটি রিভারিটলগ 9 দিয়ে চালু করেছি একটি সংক্ষিপ্ত আইডি স্ট্রিং সহ আমি আমার লগ ফাইলে বেশ কয়েকটি লাইন পাই get তবে যখন আইডি স্ট্রিংটি 255 টির চেয়ে বেশি হয়, তখন কিছুই লগ হয় না (দেখে মনে হচ্ছে মোড_উইরাইট এমনকি কার্যকর করা যাচ্ছে না?)।

আপনি যদি এই প্রশ্নটিকে আকর্ষণীয় / সহায়ক মনে করেন তবে দয়া করে এটি উত্সাহিত করুন।


এই একটি রেজেক্স সমস্যা হতে পারে? আপনি কি পরীক্ষা করেছেন যে 255 টির বেশি অক্ষরের চেয়ে বেশি পংক্তির জন্য পুনর্লিখিত অনুরোধটি সঠিক? যদি তা না হয় তবে সম্ভবত আপনি প্রাক ও পুনর্লিখনের অনুরোধগুলি পোস্ট করতে পারেন।
tomjedrz

3
মোড_উইরাইটের লগিংটি সক্ষম করুন RewriteLogএবং RewriteLogLevelযাতে আপনি দেখতে পাচ্ছেন কী কী মিলছে এবং এটি কীভাবে পুনরায় লেখা হচ্ছে। আমি অনুমান করব যে কেবল 255 টি অক্ষর অনুলিপি করা হচ্ছে $1, এবং idএটি ক্লায়েন্ট দেখার অনুমতিপ্রাপ্ত নয় এমনটি হয়ে গেছে, তাই অ্যাপাচি 403 ফেরত দেয় I একটি নির্দিষ্ট 256-বাইট বাফার (256 তম এনআরএল সমাপ্ত করার জন্য সংরক্ষিত) এর পিছনে উল্লেখ।
জেমস স্নিঞ্জার

প্রশ্নে আপডেট দেখুন - দীর্ঘ
প্যারামের

উত্তর:


8

আপনি কি মনে করেন যে আপনি ফাইল সিস্টেমের সীমাবদ্ধতার মধ্যে চলেছেন?

সর্বোচ্চ ফাইলের দৈর্ঘ্য 255 বাইটের হতে পারে এবং যখন অ্যাপাচি বা মোড_আরাইট ফাইল পরীক্ষা করে থাকে তবে অপারেটিং সিস্টেমের মাধ্যমে যদি কোনও ত্রুটি অ্যাপাচে ফিরে আসে।

আপনি যদি আপনার .htaccess ফাইলে কিছু নিয়ম রাখেন তবে সমস্যার সমাধান করতে খুব দেরী। অ্যাপাচি ইতোমধ্যে ফাইলের নাম স্থির করার চেষ্টা করবে এবং একটি 403 ত্রুটি ফিরে পেয়ে ফাইল সিস্টেমের ত্রুটি '(36) ফাইলের নাম খুব দীর্ঘ' ছোঁড়াবে।

হতে পারে আপনি আপনার অ্যাপ্লিকেশনটির ভিতরে URL প্যাটার্নটি পরিবর্তন করতে পারেন change স্ল্যাশ থেকে স্ল্যাশ পর্যন্ত সর্বোচ্চ 255 টি চর cha

সম্পাদনা: এই ইস্যুটির বিস্তারিত উত্তরের জন্য এখানে দেখুন । আমি সেখান থেকে আমার ধার নিয়েছি।


হ্যাঁ, এটি বর্তমানে আমরা যা করতে পারি তা কেবল আমিই করছি, যদিও আমি একদম কাজের প্রত্যাশাই করছি বা তাত্পর্য স্থাপনের চেষ্টা করব।
ফিলফ্রেও

3
মাইক্রোস্পিনো, দেখে মনে হচ্ছে আপনি @ জেফ ক্লার্কের উত্তরটি থেকে আপনার উত্তরটির কিছু অংশ কেটে পেস্ট করেছেন: সার্ভারসফল্ট / প্রশ্ন / ১১২০৯7/২ । আপনার এই উত্তরের হাইপারলিঙ্ক করা উচিত, যাতে সে কিছুটা কুখ্যাত হয়।
স্টিফান লাসিউইস্কি

@ স্টেফান ল্যাসিউসকি: আপনি ঠিক বলেছেন, আমি একটি উল্লেখ যুক্ত করেছি।
মাইক্রোস্পিনো

সুতরাং, আপনি ভাবছেন হয়ত অ্যাপাচি অনুরোধ করা ফাইলটি নির্বিশেষে স্থিত করার চেষ্টা করছে - আমার অর্থ, এটি বোঝানোর একমাত্র উপায় হতে পারে যে খুব দীর্ঘ ইউআরএল এমনকি পুনরায় লেখার ইঞ্জিন দ্বারাও তোলা হচ্ছে না ...
হুরাসকোল

হ্যাঁ এটি আমার ধারণা, যদিও আমি মনে করি যে সাধারণভাবে বেশ কয়েকটি দীর্ঘ url এবং ফাইলের নাম থাকা বেশ কয়েকটি কারণে এড়ানো উচিত। সুতরাং আমি যে সর্বোত্তম পরামর্শটি ভাবতে পারি তা হ'ল যদি ফাইলের নামটি খুব বেশি দীর্ঘ না হয় তবে ইউআরএল প্যাটার্নে কিছু পরিবর্তন করা।
মাইক্রোস্পিনো

2

এই সীমা সম্পর্কে এখানে একই রকম প্রশ্ন রয়েছে :

আপনি অন্তর্নিহিত ফাইল সিস্টেমের সীমাবদ্ধতার দিকে চলে যেতে পারেন

আপনি যদি কোথাও REQUEST_FILENAME ব্যবহার করছেন তা আমি জানি না hhtaccess কনফিগারেশন, তাই জেনে নেই যে প্রদত্ত সমাধানটি কাজ করছে কিনা।


এটি বোধগম্য, কিন্তু না, আমি না। .Htaccess ফাইলটিকে সম্পূর্ণরূপে অন্তর্ভুক্ত করার জন্য আমি আমার প্রশ্ন সম্পাদনা করেছি। অন্যান্য ধারণা?
ফিলফ্রেও

Httpd.apache.org/docs/trunk/rewrite/tech.html এ "অ্যাপাচি Mod_rewrite প্রযুক্তিগত বিবরণ" অনুসারে "যদিও Mod_rewrite ইউআরএলগুলিতে ইউআরএলগুলি, ফাইলের নামগুলিতে URL এবং এমনকি ফাইলের নামগুলিতে ফাইলের নামগুলি পুনরায় লেখেন , তবে API বর্তমানে কেবলমাত্র একটি URL- থেকে - ফাইলের নাম। সুতরাং আপনি যদি কোনও আসল ফাইলকে আঘাত করছেন না, তবে ফাইলের নাম হুকের URL টি ওএস সংস্থান সীমাতে আঘাত করছে?
স্টেফান লাসিউইস্কি

0

অবশ্যই একটি আকর্ষণীয় প্রশ্ন। আপনি কি মোড_সিকিউরিটি চালান এবং যদি তাই হয় তবে তা ছাড়া চেষ্টা করে দেখুন? সম্ভবত এটি দীর্ঘ পথের নামগুলি বা আনইনকোডযুক্ত কমা সহ দীর্ঘ পথের নাম পছন্দ করে না? ^^

যদিও এটি স্বভাবতই ইউআরএল পাথের সীমাবদ্ধতার মতো বা এর কমপক্ষে পৃথক পৃথক বিভাগে বা গমনসি যেমন লিখেছেন তার অন্তর্নিহিত ফাইল সিস্টেমের ব্যাখ্যা মনে হয়। এটিও ব্যাখ্যা করবে যে কোয়েরি স্ট্রিংয়ের দীর্ঘ অংশের সাথে নিয়মিত ইউআরএল ঠিকঠাক কাজ করে।

আমি মনে করি পুরানো এএসপি.নেট 260 অক্ষরের অনুরোধের পথ সীমা বা অন্য কিছু ব্যবহার করত।


প্রশ্নের আপডেট দেখুন। আর না, আমি একটি mod_security ফাইল দেখতে না পান /usr/include/apache2/বা /usr/lib/apache2/modules/(কিন্তু আমি mod_rewrite সেখানে দেখতে না) তাই আমি অভিমানী করছি এটি ইনস্টল করা নেই।
ফিলফ্রেও

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.