كيفية إنشاء إعادة توجيه مؤقتة ودائمة باستخدام Nginx

مقدمة

إعادة توجيه 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 الجديد ويمكن استخدامه لإنشاء إعادات توجيه مؤقتة ودائمة على حد سواء. بأبسط شكل له ، يأخذ على الأقل حجمين: الرابط القديم والرابط الجديد.

يمكنك تنفيذ إعادة توجيه مؤقتة باستخدام السطور التالية في تكوين خادمك:

Temporary redirect with rewrite
server {
    . . .
    server_name www.domain1.com;
    rewrite ^/$ http://www.domain2.com redirect;
    . . .
}

توجيه هذا يُوجِّه المستعرض لتوجيه جميع الطلبات إلى www.domain1.com إلى www.domain2.com. هذا الحل، ومع ذلك، يعمل فقط لصفحة واحدة، وليس للموقع بأكمله. لإعادة توجيه أكثر من صفحة واحدة، يمكنك استخدام التوجيه rewrite بالتعبيرات العادية لتحديد مجلدات بأكملها بدلاً من ملفات فردية فقط.

redirect يُطابِق أنماط التعبيرات العادية في الأقواس. ثم يشير إلى النص المُطابِق في وجهة التوجيه باستخدام التعبير $1، حيث 1 هو المجموعة الأولى من النص المُطابِق. في الأمثلة المعقدة أكثر، تتم إعطاء مجموعات المطابقة التالية أرقامًا تسلسلية.

على سبيل المثال، إذا أردت توجيه كل صفحة مؤقتًا داخل www.domain1.com إلى www.domain2.com، يمكنك استخدام الآتي:

Temporary redirect with rewrite
server {
    . . .
    server_name www.domain1.com;
    rewrite ^/(.*)$ http://www.domain2.com/$1 redirect;
    . . .
}

server {
    . . .
    server_name www.domain2.com;
    . . .
}

بشكل افتراضي، تقوم التوجيهة rewrite بإنشاء إعادة توجيه مؤقتة. إذا كنت ترغب في إنشاء إعادة توجيه دائمة، يمكنك القيام بذلك عن طريق استبدال redirect بـ permanent في نهاية التوجيهة، مثل هذا:

Permanent redirects
rewrite ^/$ http://www.domain2.com permanent;
rewrite ^/(.*)$ http://www.domain2.com/$1 permanent;

لننتقل إلى بعض الأمثلة المحددة.

المثال 1 — الانتقال إلى نطاق مختلف

إذا كنت قد أنشأت وجودًا على الويب وترغب في تغيير نطاقك إلى عنوان جديد، من الأفضل عدم ترك نطاقك القديم فقط. ستتعطل العلامات المرجعية لموقعك والروابط إلى موقعك الموجودة على صفحات أخرى على الإنترنت إذا اختفى محتواك دون أي تعليمات للمتصفح حول كيفية العثور على موقعه الجديد. سيتسبب تغيير النطاقات دون إعادة التوجيه في فقدان موقعك لحركة المرور من الزوار السابقين والروابط القديمة.

في هذا المثال، سنقوم بتكوين إعادة توجيه من النطاق القديم المسمى domain1.com إلى النطاق الجديد المسمى domain2.com. سنستخدم إعادات التوجيه الدائمة هنا لأن النطاق القديم سيتم تشذيبه، ويجب أن يذهب كل حركة المرور إلى النطاق الجديد ابتداءً من الآن.

لنفترض أن لديك موقع الويب مكون بحيث يتم تقديمه من نطاق واحد يُسمى domain1.com بالفعل مكون في Nginx على النحو التالي:

/etc/nginx/sites-available/domain1.com
server {
    . . .
    server_name domain1.com;
    . . .
}

سنفترض أيضًا أنك تخدم نسختك المستقبلية من الموقع على domain2.com:

/etc/nginx/sites-available/domain2.com
server {
    . . .
    server_name domain2.com;
    . . .
}

لنقوم بتغيير ملف تكوين كتلة الخادم domain1.com لإضافة إعادة توجيه دائمة إلى domain2.com:

/etc/nginx/sites-available/domain1.com
server {
    . . .
    server_name domain1.com;
    rewrite ^/(.*)$ http://domain2.com/$1 permanent;
    . . .
}

لقد قمنا بإضافة الإعادة التوجيه المذكورة باستخدام توجيه 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.

نفترض أن موقع الويب الخاص بك مكون على النحو التالي:

Original server block configuration
server {
    . . .
    server_name example.com www.example.com;
    . . .
}

تكوين إعادة التوجيه بسيط مثل استخدام اثنين من توجيهات الإعادة.

Redirects added to the original configuration
server {
    . . .
    server_name example.com www.example.com;
    
    rewrite ^/products.html$ /offer.html permanent;
    rewrite ^/services.html$ /offer.html permanent;
    . . .
}

تقبل التوجيهات الموجهة العنوان الأصلي الذي يجب توجيهه وكذلك العنوان المقصد للصفحة الجديدة. نظرًا لأن التغيير هنا ليس مؤقتًا، تم استخدام permanent في التوجيه أيضًا. يمكنك استخدام عدد غير محدود من التوجيهات مثل هذه للتأكد من عدم رؤية الزوار لأخطاء 404 Not Found غير ضرورية عند نقل محتويات الموقع.

الاستنتاج

لديك الآن المعرفة الكافية لتوجيه الطلبات إلى مواقع جديدة. تأكد من استخدام نوع التوجيه الصحيح، حيث يمكن أن يؤثر استخدام التوجيهات المؤقتة بشكل غير صحيح على تصنيف البحث الخاص بك.

هناك استخدامات متعددة أخرى لإعادات التوجيه HTTP، بما في ذلك إجبار الاتصالات الآمنة باستخدام SSL (أي استخدام https بدلاً من http) والتأكد من أن جميع الزوار سينتهون فقط على عنوان مضمون بـ www. من الموقع.

استخدام التوجيهات بشكل صحيح سيسمح لك بالاستفادة من وجودك الحالي على الويب مع إمكانية تعديل هيكل موقعك حسب الضرورة. إذا كنت ترغب في معرفة المزيد حول الطرق التي يمكنك من خلالها توجيه زوارك، يحتوي Nginx على وثائق رائعة حول الموضوع في أقسام وحدة إعادة الكتابة من الوثائق الرسمية ومقالة في المدونة الرسمية حول إنشاء التوجيهات.

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-temporary-and-permanent-redirects-with-nginx