অ্যাপাচি: হাজার হাজার স্থায়ী পুনঃনির্দেশ পরিচালনা করার সর্বোত্তম উপায় কী?


20

আমাদের কাছে 3000 301 পুনঃনির্দেশগুলির একটি তালিকা রয়েছে। আমাদের সহায়তা দরকার

  1. এগুলি রাখার সবচেয়ে ভাল জায়গাটি কী হবে? মনে হচ্ছে এই 3000 লাইনটি ভোস্টের ভিতরে httpd.conf এ স্থাপন করা একটি গোলযোগ হবে।
  2. হাজার হাজার ইউআরএল হ্যান্ডেল করার প্রস্তাবিত উপায়গুলি কী কী?
  3. পৃষ্ঠা লোডিং গতি এবং অ্যাপাচি সার্ভার লোডকে এটি কতটা প্রভাব ফেলবে?

ধন্যবাদ।

উত্তর:


29

আপনি অন্য কোনও ফাইলে পুনঃনির্দেশগুলি বজায় রাখতে সক্ষম হতে Includeনির্দেশিকা ব্যবহার করতে পারেন httpd.conf। তবে এটি খুব দক্ষ হবে না, কারণ প্রতিটি অনুরোধকে নিয়মিত প্রকাশের প্রচুর পরিমাণে পরীক্ষা করা প্রয়োজন checked ফাইলের প্রতিটি পরিবর্তনের পরে একটি সার্ভার পুনঃসূচনা প্রয়োজন।

অনেকগুলি পুনঃনির্দেশের জন্য আরও ভাল উপায় হ'লdbm ইউআরআই থেকে পুনঃনির্দেশগুলিতে মানচিত্র ঘোষণার জন্য টাইপের পুনর্নির্মাণের নির্দেশিকা ব্যবহার করা । এইভাবে এটি দক্ষ হবে, কারণ ডিবিএম লুকআপগুলি খুব দ্রুত এবং মানচিত্রে পরিবর্তনের পরে httpdমানচিত্র ফাইল পরিবর্তনের সময় যাচাই করার জন্য আপনাকে কোনও সার্ভার পুনরায় চালু করতে হবে না ।

পুনর্লিখনের নিয়মগুলি দেখতে এরকম হবে (আমার ফেডোরা 16 কম্পিউটারে পরীক্ষিত):

RewriteEngine On
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]

এবং dbm মানচিত্রটি টেক্সট মানচিত্র থেকে এমনভাবে তৈরি করা হবে /etc/httpd/conf/redirects.txt:

/foo http://serverfault.com/
/bar/lorem/ipsum/ http://stackoverflow.com/

একটি কমান্ড ব্যবহার করে

httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db

উত্তরের জন্য ধন্যবাদ. আমি এটি চেষ্টা করেছিলাম তবে ত্রুটিগুলি পেয়েছি: আমার এক লাইন redirects.txt ফাইল সামগ্রী (স্থান পৃথক মান) mydomain.com/experiment mydomain.com/new_page এটি আমাকে 'রেইভারিটকন্ড $ {পুনঃনির্দেশগুলি: $ 1}! = "" লাইনে পার্স ত্রুটি দিয়েছে । /Usr/local/apache/conf/httpd.conf এর 314 লাইনে সিনট্যাক্স ত্রুটি: রিউরাইটকন্ড: খারাপ পতাকা ডেলিমিটারগুলি আমি মন্তব্য করেছি যে তারপরে অ্যাপাচি শুরু হয়েছে তবে mydomain.com/experiment (বা মাইডোমেন থেকে অন্য কোনও ইউআরএল) ভ্রমনটি আমাকে ত্রুটি দিয়েছে "অনুরোধটি এমনভাবে পুনঃনির্দেশিত করা হচ্ছে যা এটি সম্পন্ন করা যায়নি"।
ucker

উপরের স্নিপেট দিয়ে অ্যাপাচি পুনরায় শুরু হচ্ছে না। আপনি দয়া করে সাহায্য করতে পারেন? আমি কোনও লগ ফাইল এ সম্পর্কিত কোনও ত্রুটি দেখতে সক্ষম নই।
ucker

আমি বলেছিলাম এটি অনির্ধারিত ছিল - আমি প্রত্যাশা করেছি যে এটির জন্য কিছু টুইট করা দরকার। আমি ভেবেছিলাম এটি যথেষ্ট হবে, দুঃখিত। এইচটিপিপি শুরু হয়নি কারণ !=এবং এর মধ্যে কোনও স্থান থাকতে পারে না ""- আমি এখন আমার একটি উদাহরণকে একটি কার্যকরী এবং পরীক্ষিত সংস্করণে সংশোধন করেছি।
টমেটজকি

আরও একটি মন্তব্য: আপনার পুনঃনির্দেশগুলির যদি ক্যোয়ারী স্ট্রিংগুলির উপর নির্ভর করতে হয় ( ?ইউআরএল-এর পরে সমস্ত কিছু ) তবে এটিও সম্ভব । এটি এখন যেমন http://yourserver.com/foo?q=barপুনঃনির্দেশ করতে ক্যোয়ারী স্ট্রিং যোগ করবে, উদাহরণস্বরূপ পুনঃনির্দেশ হবে http://serverfault.com/?q=bar
টমেটজকি

আপডেটের জন্য ধন্যবাদ. RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.dbত্রুটি দিলেন RewriteMap dbm type db is invalid। তবে আমি যখন RewriteMap redirects txt:/etc/httpd/conf/redirects.txtএটি ব্যবহার করেছি। আপনি এখনও সরল পাঠ্যের পরিবর্তে ব্যাখ্যা করেছেন এমনভাবে আমি হ্যাশড পথে যেতে চাই। তবে আমি ডিবিএম ত্রুটি সম্পর্কে খুব বেশি কিছু খুঁজে পাইনি। আপনার সাহায্যের জন্য ধন্যবাদ.
ucker

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.