nginx পরামিতি সহ একটি url জন্য পুনর্লিখন


16

আমার এই ধরণের একটি URL রয়েছে:

http://www.example.com/?param1=val1&param2=&param3=val3&param4=val4&param5=val5

এবং আমি এটির সাথে এটি পুনর্নির্দেশ করতে চাই:

http://www.example.com/newparam/val3/val4

সুতরাং আমি এই পুনর্লিখনের নিয়মটি কোনও সাফল্য ছাড়াই চেষ্টা করেছি:

rewrite "/?param1=val1&param2=&param3=(.+)&param4=(.+)&param5=(.+)" http://www.example.com/newparam/$1/$2 redirect;

এনজিনেক্স কি ক্যোয়ারী প্যারামিটারগুলি মোকাবেলা করতে সক্ষম নয়?

সম্পাদনা: আমি সমস্ত পিটিশন পুনরায় লিখতে চাই না। অন্যদেরকে প্রভাবিত না করে আমার কেবল সেই ইউআরএলটিই আবার লিখতে হবে।

উত্তর:


15

ঠিক আছে, rzab এর প্রাথমিক সহায়তার জন্য ধন্যবাদ, আমি এই নিয়মটি এই কার্যনির্বাহী সমাধানে তার নতুন সংজ্ঞা দিয়েছি:

location / {
    if ($args ~* "/?param1=val1&param2=&param3=[0-9]+&param4=.+&param5=[0-9]+") {
        rewrite ^ http://www.example.com/newparam/$arg_param3/$arg_param4? last;
    }
}

আমি কেবল অসীম পুনরাবৃত্তি এড়াতে একটি শর্ত যুক্ত করেছি এবং ক? নিয়ম শেষে পরিত্রাণ পেতে প্রাথমিক প্যারাম । এটি পুরোপুরি কাজ করে :)


1
ক্যোরি স্ট্রিং প্যারামিটারগুলির একটি পৃথক ক্রমকে মঞ্জুরি দেয়। যেমন আপনার আগে ifকাজ করা বন্ধ করবে যখন উদাহরণস্বরূপ param2আগে যায় param1
আলেকজান্ডার আজরোভ

মজাদার. আমার ক্ষেত্রে এটি ঘটবে না কারণ এটি কোনও ই-মেইলে ক্লিকযোগ্য একটি ইউআরএল, তবে এটি জেনে রাখা ভাল। ধন্যবাদ।
ডেভিড মোরালেস

4
অবস্থান = / {
  পুনর্লিখন ^ http://www.example.com/newparam/$arg_param3/$arg_param4;
}

সুতরাং, আমি কি $ আরগ_ এবং তার পরে প্যারামিটারের নাম লিখব?
ডেভিড মোরালেস

হ্যাঁ, এটি সবচেয়ে সহজ হবে।
মার্টিন Fjordvald

ঠিক আছে, তবে আমি সমস্ত আবেদনগুলি পুনরায় লিখতে চাই না। অন্যদেরকে প্রভাবিত না করে আমার কেবল সেই ইউআরএলটিই আবার লিখতে হবে।
ডেভিড মোরালেস

আমি কিছু পরীক্ষা করেছি। এই নিয়ম একটি অসীম পুনঃনির্দেশ উত্পন্ন করবে। আমি যে কোডটি পেয়েছি তা দিয়ে আমি একটি নতুন উত্তর লিখব। ধন্যবাদ :)
ডেভিড মোরালেস

আমার সম্ভবত উল্লেখ করা উচিত, পুনরাবৃত্তি এড়াতে আপনাকে "অবস্থান /" ছাড়াও "অবস্থান /" ঘোষণা করতে হবে। আমি অনুমান করি আপনি এটি প্রধান রুট হিসাবে কোথাও প্রক্সি_পাসে পাবেন। "অবস্থান = /" ঠিক / অনুরোধের সাথে মেলে। যাইহোক, $ আরগগুলি মিলছে ঠিক আছে, এটি প্যারামিটারগুলির সাথে কোনও অনুরোধের সাথে মিলবে না? প্যারাম 1 = ভাল 1 & ....
rzab
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.