আমার অ্যাপাচি সার্ভার কনফিগারেশন ফাইলগুলিতে অ্যাক্সেস নেই এবং কেবলমাত্র .htaccess
ফাইলগুলির মাধ্যমে কনফিগারেশনকে প্রভাবিত করতে পারি । দুর্ভাগ্যক্রমে, এটি বরং কিছু করতে পারে এমন কিছু বিষয় সীমাবদ্ধ করে। উদাহরণস্বরূপ, সমস্ত এইচটিটিপি অনুরোধকে এইচটিটিপিএসে পুনঃনির্দেশ করার সবচেয়ে সহজ উপায় হ'ল:
<If "%{HTTPS} != 'on'">
Redirect permanent / https://www.my-domain.com/
</If>
তবে এটি আমাকে ডোমেন নামটিকে হার্ড-কোড করতে বাধ্য করে, তাই আমি .htaccess
সহজেই এই ফাইলটি পুনরায় ব্যবহার করতে পারি না can't আমার ক্ষেত্রে, একই সাইটটি বেশ কয়েকটি ভিন্ন ডোমেন (কেবলমাত্র একটি অন্তর্নিহিত ফাইল সিস্টেমের সাথে) থেকে অ্যাক্সেস করা যেতে পারে, সুতরাং এটি মোটেও আমার পক্ষে বিকল্প নয়। আমি এটিকে পুনর্নির্দেশের মাধ্যমে সমাধান করতে পারি না https://%{SERVER_NAME}/
কারণ Redirect
বিবৃতিটি এই ধরণের পরিবর্তনশীল প্রতিস্থাপনকে সমর্থন করে না ( অংশে বা বিভাগগুলি ব্যতীত<Location>
<LocationMatch>
, তবে অবশ্যই এগুলি .htaccess
ফাইলগুলিতে উপলব্ধ নয় )।
ইতিমধ্যে, যদি আমি একটি সাধারণ / পুনরায় ব্যবহারযোগ্য .htaccess
কনফিগারেশন করতে চাই, তবে আমি mod_rewrite
পরিবর্তে ব্যবহার করতে বাধ্য হচ্ছি Redirect
যাতে আমি সার্ভারের পরিবর্তনশীল বিকল্প ব্যবহার করতে পারি। সংশ্লিষ্ট সমাধানটি হ'ল
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=permanent,L]
যা ইতিমধ্যে উল্লেখযোগ্যভাবে জটিল, mod_rewrite
আমি যে নিয়মগুলি সেট আপ করতে চাই তার সাথে সম্ভাব্য মিথস্ক্রিয়াগুলির উল্লেখ না করাই - সম্ভবত, আমি mod_rewrite
তার জটিলতার কারণে ন্যূনতম ব্যবহার করতে চাই ।
আর একটি উদাহরণ, যার জন্য আমি মোটেও কার্যকরীভাবে পাইনি, এটি হ'ল mod_substitute
, যা %{variable}
প্রসারণকে মোটেই সমর্থন করে না । যদি আমার সাইটটি sub_dir
সার্ভারে একটি নির্দিষ্ট সাব-ডিরেক্টরিতে ( ) থাকে এবং আমি সেই ডিরেক্টরিতে HTML পৃষ্ঠাগুলিতে সমস্ত লিঙ্ক পোস্ট-প্রক্রিয়া করতে চাই, আমি এটি করতে পারি
AddOutputFilterByType SUBSTITUTE text/html
Substitute s~/sub_dir/[^\s]+/~/sub_dir/something_else/~
সুতরাং এখানে, আমাকে ডিরেক্টরিটি হার্ড-কোড করতে sub_dir
হবে, যা আমি প্রতি অন্য সাব-ডাইরেক্টরির জন্য একই প্রতিস্থাপনটি সম্পাদন করতে চাইব ((না, আমার কাছে রুট URL টি অ্যাক্সেস নেই /
)। এটি যদি পুনর্লিখনের নিয়ম হয় তবে আমি ঠিক তেমন পরিবেশের পরিবর্তনশীল সংজ্ঞা %{env:site_dir}
দিতে পারি:
RewriteRule ^ - [E=site_dir:/sub_dir]
তবে এই পরিবেশের পরিবর্তনশীলটি আমার কোনও কাজে আসেনি কারণ mod_substitute
এগুলি ব্যাখ্যা করে না।
সুতরাং, এর মতো মডিউলগুলিতে হার্ড কোডিং এবং সদৃশ ডোমেন এবং সাব-ডাইরেক্টরিগুলি এড়ানোর কোনও উপায় আছে mod_alias
বা mod_substitute
, যার মতো একই ব্যবস্থা নেই mod_rewrite
? উদাহরণস্বরূপ, %{env:variable}
এই মডিউলগুলির মতো কোনওভাবে পরিবেশের ভেরিয়েবলের অ্যাক্সেস পেয়ে ?