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.