nginx কেস সংবেদনশীল পুনর্লিখন


15

আমি আমার এনজিএনএক্সকে যথাসম্ভব পরিষ্কার পুনর্নির্দেশ করার চেষ্টা করছি। আমি বুঝতে পারি ~ * কে ক্ষেত্রে সংবেদনশীল না হয় তবে আমি এটি কেবল উদাহরণ 2 এ কাজ করতে পারি।

উদাহরণ 1

rewrite ^/foobar http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;

উদাহরণ 2-এটি কাজ করে তবে এটি উপরের লাইনের মতো দক্ষ নয়।

if ( $request_filename ~* foobar ) {
         rewrite ^ http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
   }

খুব গা 1় না হয়ে উদাহরণ 1 এর সাথে সংবেদনশীল পুনর্নির্দেশ করার কি উপায় আছে?

ধন্যবাদ।

উত্তর:


10

আমি ঠিক এই একই সমস্যাটি (এবং স্থির) করেছি এবং উত্তরটি সন্ধান করার চেষ্টা করে এখানেই শেষ করেছি। এনজিনেক্স ডকুমেন্টেশন ( http://nginx.org/en/docs/http/ngx_http_rewrite_module.html ), পরিষ্কারভাবে জানায় না যে ~ * শুধুমাত্র যদি একটি বিবৃতিতে কাজ করে, তবে দৃশ্যত, এটি ক্ষেত্রে।

যদি কোনও বিবৃতিটির বাইরে এনজিক্স ইউআরএল পুনর্লিখনের সাথে কেস-সংবেদনশীল নিয়মিত অভিব্যক্তি মিলে যায় তবে আমাকে অ্যাপাচি / পার্ল স্টাইলটি ব্যবহার করতে হবে:

rewrite "(?i)foobar" http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;

Http://perldoc.perl.org/perlretut.html দেখুন (সংবেদনশীলদের জন্য অনুসন্ধান করুন)। এটিও মনে হয় যে নির্দিষ্ট ক্যাপচার গোষ্ঠীর বাইরে উপসর্গ (? I) এটি পুরো অনুসন্ধান স্ট্রিংয়ের জন্য প্রয়োগ করে। দ্রষ্টব্য: এটি "^ (? I) ফুবার" এর সাথে কাজ করছে বলে মনে হচ্ছে না কারণ "^" নিহিত বলে মনে হচ্ছে।

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

location /foobar {
     rewrite "(?i)" http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
}

আশাকরি এটা সাহায্য করবে...


30

আমি এই কাজটি করতে কী খুঁজে পেয়েছি:

rewrite ^/foobar http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;

আপনার কেবল এটি করা দরকার:

rewrite (?i)^/foobar http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;

এর অর্থ হ'ল প্রিপেন্ড (? I) এবং অন্যথায় মিলের জন্য সবকিছু এক রকম।


4
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
thekingoftruth

2
ধন্যবাদ. এনগিনেক্স ডক্সে এত সহজ এবং এখনও খুঁজে পাওয়া শক্ত। সংক্ষিপ্ত পয়েন্টারটি অনেক প্রশংসা!
PKHunter

1

একটি ওয়েবসাইটে এখনই কাজ করে আমি দেখতে পেয়েছি এটি কাজ করবে বলে মনে হয়। একই পরিস্থিতিতে যে কোনও লোকের জন্য আমি এই কয়েক ঘন্টা ছিলাম।

location ~* ^/foobar {
  rewrite ^(.*)$ $scheme://$http_host/whatever/foobar redirect;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.