إعادة توجيه خيالية php. PHP إعادة توجيه الروابط الخارجية

19.05.2019

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

أي نوع من إعادة التوجيه؟

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

في أي الحالات قد تكون هناك حاجة لإعادة التوجيه:

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

على عكس اللغات الأخرى، تتمتع PHP ببعض المزايا في تنفيذ عمليات إعادة التوجيه:

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

لإعادة التوجيه في PHP، يتم استخدام الدالة header(). يتم استخدامه لإرسال رأس http. بناء الجملة الخاص به هو:

رأس فارغ (سلسلة $string [، bool $replace = true [، int $http_response_code ]])

الحجج المقبولة من قبل الدالة:


  • سلسلة $ سلسلة - سلسلة الرأس؛

هناك نوعان من هذه الحجة. الأول هو إرسال رمز حالة الاتصال. يبدأ بـ "HTTP/". يرسل النوع الآخر رمز الحالة (إعادة التوجيه 302) إلى متصفح العميل مع الرأس. تبدأ هذه الوسيطة بـ "الموقع:"


  • bool $replace هي سمة اختيارية من النوع bool . المسؤول عن تجاوز الرأس السابق. إذا تم التعيين على true، فسيتم استبدال الرأس أو الرؤوس السابقة من نفس النوع. إذا تم ضبط الوسيطة على false، فلن تتم إعادة كتابة الرأس. افتراضيًا، يتم تعيين هذه القيمة على true؛
  • http_response_code - تفرض الوسيطة رمز استجابة HTTP. سيتم تثبيت الكود بنجاح بشرط ألا تكون وسيطة السلسلة فارغة.

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

عند استخدام وظيفة header() لإعادة توجيه الروابط الخارجية، فإن موقع استدعائها له أهمية كبيرة. في الكود يجب أن يكون موجودًا فوق كل علامات html:


باستخدام إعادة توجيه الرأس ().

لتوضيح وظيفة الوظيفة على خادم محلي، تحتاج إلى إنشاء ملفين. لنستدعي أحدهما redirect.php والآخر redirect2.php . داخل الأول سنقوم بإجراء استدعاء دالة بالتنسيق التالي:

وفي ملف آخر نضع السطر:

صدى "مرحبًا! أنت في ملف redirect2.php";


بعض الأمثلة العملية لاستخدام إعادة التوجيه إلى php:

  • فرض رمز حالة http - عند استخدام الوسيطة الأولى لوظيفة header() من النوع "location"، يتم تمرير رمز الحالة الافتراضي "302" (منقول مؤقتًا) إلى الرأس. يمكن أن يصبح هذا مشكلة عند نقل مورد إلى اسم مجال آخر. في محركات البحث، قد تستغرق عملية إعادة التوجيه المؤقتة وقتًا أطول. بعد كل شيء، يقوم محرك البحث بتحليل رمز الحالة باستمرار. وتقول "تم نقله مؤقتًا". مثال على إعادة الكتابة القسرية لرمز الحالة "302" إلى "301" (منقول نهائيًا):

إعادة الكتابة ممكنة أيضًا على مرحلتين. يعيد السطر الأول كتابة رمز الحالة، ويعيد السطر الثاني التوجيه إلى عنوان جديد:

  • استخدام إعادة توجيه الروابط الخارجية لإعادة التوجيه حسب دور المستخدم. يتم تحديد الدور أثناء إجراء المصادقة. تتم كتابة القيمة المراد معالجتها إلى المتغير $who:

  • مثال عملي مبسط لتنفيذ إعادة توجيه رابط خارجي - الضغط على الرابط يؤدي إلى صفحة php. من هنا يتم نقل المستخدم إلى Rambler خلال 5 ثواني. كود HTML:

اضغط علي

رمز ملف Redirect3.php:


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

التنقل السريع في هذه الصفحة:

إذا قررت كتابة برنامج نصي وإعادة توجيه PHP، فإن مزايا هذه الخطوة واضحة: PHP هي لغة برمجة نصية موجهة للخادم؛ سيتم تنفيذ إعادة التوجيه من خلال برنامج نصي موجود على الخادم، وليس في متصفح الزوار. يمكن إجراء بعض عمليات إعادة التوجيه من جانب العميل - من خلال إعادة توجيه js (أي من خلال إعادة توجيه JavaScript).

يعد هذا أسلوبًا أكثر مرونة وتنوعًا، ويمكنك تنفيذ أنواع متعددة من عمليات إعادة التوجيه في PHP، على عكس الطرق الأخرى. فيما يلي أكثر أنواع إعادة التوجيه شيوعًا التي يمكن إجراؤها في PHP: أ) إعادة التوجيه 301 PHP (حالة إعادة التوجيه الدائمة)، ب) إعادة التوجيه 302 PHP (حالة إعادة التوجيه المؤقتة)، ج) التحديث.

ستكون هذه المقالة مفيدة في المقام الأول لمشرفي المواقع المبتدئين الذين يبحثون عن طرق لتنفيذ إعادة توجيه عنوان URL إذا لم يكن ذلك ممكنًا باستخدام حلول شائعة أخرى مثل Htaccess.

PHP رأس لغة الوظيفة

على سبيل المثال، لنفترض أنك تريد إعادة التوجيه إلى عنوان URL هذا http://www.somewebsite.com/target.php. في PHP مصدر الصفحة، تحتاج ببساطة إلى استدعاء البرنامج النصي لإعادة التوجيه هذا:

جرب أيضًا هذه التجربة البسيطة على الاستضافة المحلية لديك:

1) افتح محرر النصوص وأدخل هذا الرمز:

احفظه باسم targetpage.php.

2) افتح ملفًا نصيًا فارغًا آخر وأدخل هذا الرمز:

احفظه باسم Originatingpage.php.

3) الآن قم بتشغيل متصفح الويب الخاص بك. في شريط عنوان المتصفح الخاص بك، أدخل: http://localhost/originatingpage.php

4) ستلاحظ أنه بعد الضغط على زر الإدخال، فإن عنوان URL هذا: http://localhost/originatingpage.php يعيد التوجيه إلى http://localhost/targetpage.php وإلى targetpage.php، وسترى الكلمات "مرحبًا، هذا هو المخطوطة "-x".

يمكن إخفاء أحد الأخطاء الأكثر شيوعًا في تصميم كود إعادة التوجيه html:

جرب هذه التجربة:

انتقل إلى البرنامج النصي Originatingpage.php وأضف أي علامة HTML:

header('الموقع: http://localhost/targetpage.php');

لنفترض أن لديك رمزًا مثل هذا:

وهذا خطأ في إعادة التوجيه