مقدمة
إعادة توجيه HTTP هي طريقة لتوجيه نطاق أو عنوان إلى آخر. هناك عدة أنواع مختلفة من التوجيهات، كل منها يعني شيئًا مختلفًا لمتصفح العميل. أكثر نوعين شيوعًا هما التوجيهات المؤقتة والتوجيهات الدائمة.
التوجيهات المؤقتة (رمز حالة الاستجابة 302 Found) مفيدة إذا كان هناك حاجة مؤقتة لخدمة عنوان URL من موقع مختلف. على سبيل المثال، إذا كنت تقوم بصيانة للموقع، قد ترغب في استخدام توجيه مؤقت من نطاقك إلى صفحة توضيح لإعلام الزوار بأنك ستعود قريبًا.
التوجيهات الدائمة (رمز حالة الاستجابة 301 Moved Permanently)، من ناحية أخرى، تعلم المتصفح بأنه يجب نسيان العنوان القديم تمامًا وعدم محاولة الوصول إليه مرة أخرى. تكون هذه مفيدة عندما يتم نقل محتواك بشكل دائم إلى موقع جديد، مثل عندما تغير أسماء النطاقات.
سيغطي هذا الدليل شرحًا أعمق لكيفية تنفيذ كل نوع من أنواع التوجيه في Nginx، وسيقدم بعض الأمثلة لحالات الاستخدام المحددة.
المتطلبات المسبقة
لمتابعة هذا البرنامج التعليمي، ستحتاج إلى:
- A server with Nginx installed and set up to serve your website(s). You can find some examples and instructions on the tutorials for Ubuntu 22.04, Debian, or CentOS.
الحل بنظرة سريعة
في Nginx ، يمكنك إنجاز معظم إعادات التوجيه باستخدام التوجيه المدمج rewrite
. هذا التوجيه متاح افتراضيًا في تثبيت Nginx الجديد ويمكن استخدامه لإنشاء إعادات توجيه مؤقتة ودائمة على حد سواء. بأبسط شكل له ، يأخذ على الأقل حجمين: الرابط القديم والرابط الجديد.
يمكنك تنفيذ إعادة توجيه مؤقتة باستخدام السطور التالية في تكوين خادمك:
توجيه هذا يُوجِّه المستعرض لتوجيه جميع الطلبات إلى www.domain1.com
إلى www.domain2.com
. هذا الحل، ومع ذلك، يعمل فقط لصفحة واحدة، وليس للموقع بأكمله. لإعادة توجيه أكثر من صفحة واحدة، يمكنك استخدام التوجيه rewrite
بالتعبيرات العادية لتحديد مجلدات بأكملها بدلاً من ملفات فردية فقط.
redirect
يُطابِق أنماط التعبيرات العادية في الأقواس. ثم يشير إلى النص المُطابِق في وجهة التوجيه باستخدام التعبير $1
، حيث 1
هو المجموعة الأولى من النص المُطابِق. في الأمثلة المعقدة أكثر، تتم إعطاء مجموعات المطابقة التالية أرقامًا تسلسلية.
على سبيل المثال، إذا أردت توجيه كل صفحة مؤقتًا داخل www.domain1.com
إلى www.domain2.com
، يمكنك استخدام الآتي:
بشكل افتراضي، تقوم التوجيهة rewrite
بإنشاء إعادة توجيه مؤقتة. إذا كنت ترغب في إنشاء إعادة توجيه دائمة، يمكنك القيام بذلك عن طريق استبدال redirect
بـ permanent
في نهاية التوجيهة، مثل هذا:
لننتقل إلى بعض الأمثلة المحددة.
المثال 1 — الانتقال إلى نطاق مختلف
إذا كنت قد أنشأت وجودًا على الويب وترغب في تغيير نطاقك إلى عنوان جديد، من الأفضل عدم ترك نطاقك القديم فقط. ستتعطل العلامات المرجعية لموقعك والروابط إلى موقعك الموجودة على صفحات أخرى على الإنترنت إذا اختفى محتواك دون أي تعليمات للمتصفح حول كيفية العثور على موقعه الجديد. سيتسبب تغيير النطاقات دون إعادة التوجيه في فقدان موقعك لحركة المرور من الزوار السابقين والروابط القديمة.
في هذا المثال، سنقوم بتكوين إعادة توجيه من النطاق القديم المسمى domain1.com
إلى النطاق الجديد المسمى domain2.com
. سنستخدم إعادات التوجيه الدائمة هنا لأن النطاق القديم سيتم تشذيبه، ويجب أن يذهب كل حركة المرور إلى النطاق الجديد ابتداءً من الآن.
لنفترض أن لديك موقع الويب مكون بحيث يتم تقديمه من نطاق واحد يُسمى domain1.com
بالفعل مكون في Nginx على النحو التالي:
سنفترض أيضًا أنك تخدم نسختك المستقبلية من الموقع على domain2.com
:
لنقوم بتغيير ملف تكوين كتلة الخادم domain1.com
لإضافة إعادة توجيه دائمة إلى domain2.com
:
لقد قمنا بإضافة الإعادة التوجيه المذكورة باستخدام توجيه rewrite
. تطابق التعبير العادي ^/(.*)$
كل ما بعد /
في عنوان URL. على سبيل المثال، http://domain1.com/index.html
سيتم إعادة توجيهها إلى http://domain2.com/index.html
. لتحقيق الإعادة التوجيه الدائمة نقوم ببساطة بإضافة permanent
بعد توجيه rewrite
.
ملاحظة: تذكر أن تختبر تكوينك باستخدام nginx -t
ثم أعد تشغيل Nginx بعد عمل التغييرات.
المثال 2 — إنشاء تجربة دائمة على الرغم من تغيير أسماء صفحة واحدة
في بعض الأحيان، يكون من الضروري تغيير أسماء الصفحات الفردية التي تم نشرها بالفعل وتلقت حركة مرور على موقعك. يعتبر تغيير الاسم وحده سببًا في حدوث خطأ 404 لمستخدمين يحاولون الوصول إلى عنوان URL الأصلي، ولكن يمكنك تجنب ذلك باستخدام إعادة توجيه. يتأكد هذا من أن الأشخاص الذين قاموا بوضع علامة على صفحاتك القديمة أو وجدوها من خلال روابط قديمة على محركات البحث سيصلون إلى الصفحة الصحيحة.
لنفترض أن موقع الويب الخاص بك كان يحتوي على صفحتين منفصلتين للمنتجات والخدمات تُسمى products.html
و services.html
على التوالي. الآن، قررت استبدال تلك الصفحتين بصفحة عرض واحدة تُسمى offers.html
بدلاً من ذلك. سنقوم بتكوين إعادة توجيه بسيطة ل products.html
و services.html
إلى offers.html
.
نفترض أن موقع الويب الخاص بك مكون على النحو التالي:
تكوين إعادة التوجيه بسيط مثل استخدام اثنين من توجيهات الإعادة.
تقبل التوجيهات الموجهة العنوان الأصلي الذي يجب توجيهه وكذلك العنوان المقصد للصفحة الجديدة. نظرًا لأن التغيير هنا ليس مؤقتًا، تم استخدام permanent
في التوجيه أيضًا. يمكنك استخدام عدد غير محدود من التوجيهات مثل هذه للتأكد من عدم رؤية الزوار لأخطاء 404 Not Found غير ضرورية عند نقل محتويات الموقع.
الاستنتاج
لديك الآن المعرفة الكافية لتوجيه الطلبات إلى مواقع جديدة. تأكد من استخدام نوع التوجيه الصحيح، حيث يمكن أن يؤثر استخدام التوجيهات المؤقتة بشكل غير صحيح على تصنيف البحث الخاص بك.
هناك استخدامات متعددة أخرى لإعادات التوجيه HTTP، بما في ذلك إجبار الاتصالات الآمنة باستخدام SSL (أي استخدام https
بدلاً من http
) والتأكد من أن جميع الزوار سينتهون فقط على عنوان مضمون بـ www.
من الموقع.
استخدام التوجيهات بشكل صحيح سيسمح لك بالاستفادة من وجودك الحالي على الويب مع إمكانية تعديل هيكل موقعك حسب الضرورة. إذا كنت ترغب في معرفة المزيد حول الطرق التي يمكنك من خلالها توجيه زوارك، يحتوي Nginx على وثائق رائعة حول الموضوع في أقسام وحدة إعادة الكتابة من الوثائق الرسمية ومقالة في المدونة الرسمية حول إنشاء التوجيهات.