আমি একটি রেগেক্স ম্যাচ সঙ্গে একটি nginx সার্ভার সংজ্ঞা আছে, এই মত:
server_name ~^(?<vhost>[a-z0-9-]+)\.example\.com$;
root /var/www/example/$vhost;
access_log /var/log/nginx/$vhost.example-access.log;
এটি সমস্ত সুন্দরভাবে কাজ করে তবে, এই ডোমেনটি ফাস্টসিজি এবং পিএইচপি-এফপিএম ব্যবহার করে বিভিন্ন পিএইচপি প্রকল্পের হোস্ট করে, যা এগুলির মতো মান অর্জন করে $_SERVER
:
SERVER_NAME => "~^(?<vhost>[a-z0-9-]+)\.example\.com$"
HTTP_HOST => "myhost.example.com"
আপনি দেখতে পাচ্ছেন, রেজেক্স প্যাটার্নটি তার SERVER_NAME
সাথে মিলে যাওয়া স্ট্রিংয়ের পরিবর্তে intoোকানো হয়েছে । এটি আমার কাছে কিছুটা কৃপণ বলে মনে হচ্ছে এবং এটি সুরক্ষা ঝুঁকিরও প্রতিনিধিত্ব করে যে এটি অপ্রয়োজনীয় বিশদ প্রকাশ করছে (অন্যান্য কনফিগারেশনে আমি ওয়াইল্ডকার্ডের পরিবর্তে নামগুলির একটি নির্দিষ্ট সংখ্যার সাথে মিল করছি)।
আপনি "SERVER_NAME এর পরিবর্তে HTTP_HOST ব্যবহার করুন" বলতে পারেন - কেবল যদি এটি সরল ছিল - এমন লাইব্রেরি রয়েছে যা SERVER_NAME (সার্ভারের নাম) রাখার প্রত্যাশা করে। আমি এই আচরণের জন্য সত্যিই ভাল ব্যবহারের কেস দেখতে পাচ্ছি না।
curl --header "HOST: google.com" http://yourdomain/yourpage.php
কার্লটি ব্যবহার করে এটি পরীক্ষা করতে পারেন: এবং আপনার পৃষ্ঠায় ডাব্লু পিপি তে:<?php echo $_SERVER['SERVER_NAME']; ?>
আপনি google.com দেখতে পাবেন