يتم تجهيز الرابط إنتظر العد التنازلي
☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝
انتظر العد التنازلي سيتم توجيهك إلى الصفحة المستهدفة
كيفية إعادة توجيه صفحة ويب
ماهي اعادة توجيه الصفحات
تتم إعادة التوجيه عندما تتم زيارة صفحة ويب على عنوان URL معين ، فإنها تتغير إلى عنوان URL مختلف. على سبيل المثال ، يزور شخص "website.com/page-a" في متصفحه ويتم إعادة توجيهه إلى "website.com/page-b" بدلاً من ذلك. يعد هذا مفيدًا جدًا إذا أردنا إعادة توجيه صفحة معينة إلى موقع جديد ، أو تغيير بنية عنوان URL لموقع ما ، أو إزالة "www." جزء من عنوان URL ، أو حتى إعادة توجيه المستخدمين إلى موقع ويب آخر بالكامل (على سبيل المثال لا الحصر).
لنفترض أننا نقلنا موقعنا للتو ونريد إغلاق الموقع القديم. ومع ذلك ، لا نريد أن تقدم كل تلك الصفحات من الموقع القديم الخطأ 404 المخيف غير موجود. ما نحتاجه هو إعادة توجيه هذه الروابط القديمة إلى نفس المحتوى على موقعنا الجديد.
إليك مثالنا: نريد من old-website.com/blog/post إعادة التوجيه إلى new-website.com/blog/post ، جنبًا إلى جنب مع جميع المشاركات الأخرى التي تستخدم تنسيق عنوان URL نفسه. سيكون من الجيد أيضًا أن تقوم عمليات إعادة التوجيه بإبلاغ محركات البحث بأن هذا التغيير دائم ، لذا يجب عليهم التحديث وفقًا لذلك.
فكيف نفعل ذلك؟ حسنًا ، قبل أن نبدأ نحتاج إلى معرفة القليل عن HTTP.
رموز استجابةHTTP
في كل مرة ندخل فيها عنوان URL أو نجري طلبًا من متصفح ، فإننا نستخدم بروتوكول نقل النص التشعبي (HTTP). على الرغم من أن هذا يبدو وكأنه اسم رائع حقًا لفيلم شرطي خيال علمي ، إلا أنه في الواقع العملية التي نطلب من خلالها مواد عرض مثل CSS و HTML والصور من الخادم. بعد إرسال طلب ، ستقدم هذه الأصول ردًا مثل "مرحبًا ، أنا هنا ، لنذهب!" (رمز الاستجابة HTTP 200 موافق). هناك العديد من الأنواع المختلفة لرموز استجابة HTTP ، وربما يكون أكثرها شيوعًا هو 404 Not Found ؛ يمكن لصفحات الويب الاستجابة بالحالة 404 ولكن يمكن أيضًا أن تستجيب أي مادة عرض أخرى نطلبها ، سواء كانت صورة أو أي نوع آخر من الأصول.
يتم تصنيف كل استجابة HTTP ضمن رقم معين مكون من ثلاثة أرقام ، لذا فإن 404 Not Found عبارة عن رمز حالة 4XX لتوضيح أنه خطأ عميل و 200 في فئة 2XX للإشارة إلى أنها رسالة نجاح من نوع ما. نحن مهتمون بفئة 3XX لاستجابة HTTP ، مثل 301 تم نقلها بشكل دائم أو 302 تم العثور عليها ، لأن هذه هي رموز الحالة المخصصة على وجه التحديد لعمليات إعادة التوجيه. اعتمادًا على الطريقة التي نختارها ، لن نحتاج بالضرورة إلى معرفة هذه الرموز ولكنها ضرورية للآخرين.
في حالتنا ، سنستخدم إعادة التوجيه 301 لأن بعض متصفحات الويب أو الخوادم الوكيلة ستخزن هذا النوع مؤقتًا ، مما يجعل الصفحة القديمة غير قابلة للوصول والتي ، في هذه الحالة ، هي بالضبط ما نريده.
إذن كيف نبدأ بالفعل في إعادة توجيه صفحة ويب؟
عمليات إعادة توجيه HTML
ربما تكون أبسط طريقة لإعادة التوجيه إلى عنوان URL آخر هي باستخدام علامة Meta Refresh. يمكننا وضع علامة التعريف هذه داخل <head> في الجزء العلوي من أي صفحة HTML مثل هذا:
<meta http-equiv="refresh" content="0; URL='http://new-website.com'" />
سمة المحتوى هي التأخير قبل أن يعيد المتصفح التوجيه إلى الصفحة الجديدة ، لذلك قمنا بتعيينها على 0 ثانية. لاحظ أننا لسنا بحاجة إلى تعيين رمز حالة HTTP ، ولكن من المهم التحقق مرة أخرى من الفتح والإغلاق الغريبين للاقتباسات أعلاه (توجد علامات اقتباس داخل علامات الاقتباس ، لذا يجب أن تكون أنواعًا مختلفة ومطابقة).
على الرغم من أن هذه الطريقة هي أسهل طريقة لإعادة التوجيه إلى صفحة ويب ، إلا أن هناك بعض العيوب. وفقًا لـ W3C ، هناك بعض المتصفحات التي تنزعج من علامة تحديث التعريف. قد يرى المستخدمون وميضًا عند تحميل الصفحة "أ" قبل إعادة توجيههم إلى الصفحة "ب". كما أنه يعطل زر الرجوع في المتصفحات القديمة. إنه ليس حلاً مثاليًا ، ولا نشجع على استخدامه على الإطلاق.
قد يكون الخيار الأكثر أمانًا هو إعادة توجيه موقع الويب باستخدام JavaScript.
عمليات إعادة توجيه جافا سكريبت
إعادة التوجيه إلى عنوان URL آخر باستخدام JavaScript أمر سهل للغاية ، علينا ببساطة تغيير خاصية الموقع في كائن النافذة:
window.location = "http://new-website.com";
JavaScript غريب رغم ذلك ، هناك الكثير من الطرق للقيام بذلك.
window.location = "http://new-website.com";
window.location.href = "http://new-website.com";
window.location.assign("http://new-website.com");
window.location.replace("http://new-website.com");
ناهيك عن أنه يمكنك فقط استخدام الموقع لأن كائن النافذة ضمني. أو النفس أو القمة.
باستخدام كائن الموقع ، يمكننا القيام بالكثير من الأشياء الرائعة الأخرى مثل إعادة تحميل الصفحة أو تغيير مسار وأصل عنوان URL.
توجد بعض المشاكل هنا:
1.يجب تمكين JavaScript وتنزيله / تنفيذه حتى يعمل هذا على الإطلاق.
2.ليس من الواضح كيف تتفاعل محركات البحث مع هذا الأمر.
3.لا توجد رموز حالة متضمنة ، لذلك لا يمكنك الاعتماد على معلومات حول إعادة التوجيه.
ما نحتاجه هو حل من جانب الخادم لمساعدتنا عن طريق إرسال ردود 301 إلى محركات البحث والمتصفحات.
عمليات إعادة توجيه أباتشي
ربما تكون الطريقة الأكثر شيوعًا لإعادة توجيه صفحة الويب هي من خلال إضافة قواعد محددة إلى ".htaccess" على خادم ويب Apache. يمكننا بعد ذلك السماح للخادم بالتعامل مع كل شيء.
".htaccess" هو مستند يمنحنا القدرة على إعطاء أوامر إلى Apache ، ذلك الجزء من البرنامج الذي يتم تشغيله على الخادم. لإعادة توجيه المستخدمين إلى موقعنا الجديد ، سننشئ ملف .htaccess جديدًا (أو نعدل الملف الحالي) ونضيفه إلى الدليل الجذر
ectory من الموقع القديم. إليك القاعدة التي سنضيفها:
Redirect 301 / http://www.new-website.com
سيتم الآن إعادة توجيه أي صفحة يزورها المستخدم على الموقع القديم إلى الصفحة الجديدة. كما ترى ، وضعنا رمز استجابة HTTP في مقدمة قاعدة إعادة التوجيه مباشرةً.
تجدر الإشارة إلى أن هذا النوع من إعادة التوجيه يعمل فقط على خوادم Linux مع تمكين mod_rewrite ، وهي وحدة Apache تتيح لنا إعادة توجيه عناوين URL المطلوبة على الخادم عن طريق التحقق من نمط معين ، وإذا تم العثور على هذا النمط ، فسيتم تعديل الطلب في بعض طريق. تقوم معظم شركات الاستضافة بتمكين هذا بشكل افتراضي ، ولكن الاتصال بهم هو أفضل رهان لك إذا كانت هناك مشكلة. إذا كنت تبحث عن مزيد من المعلومات حول mod_rewrite ، فهناك برنامج تعليمي رائع عن tuts +. هناك أيضًا الكثير من مقتطفات .htaccess هنا على CSS-Tricks.
بالعودة إلى مثالنا ، إذا استخدمنا الكود أعلاه ، فسينتقل المستخدم إلى "old-website.com/blog/post" وسيتم إرساله إلى "new-website.com" وهو ليس سهل الاستخدام للغاية لأنه فاز " ر رؤية الصفحة الفعلية التي طلبوها. بدلاً من ذلك ، سنضيف القاعدة التالية إلى ملف ".htaccess" الخاص بنا لإعادة توجيه كل مشاركات المدونة هذه إلى المكان الصحيح:
RedirectMatch 301 /blog(.*) http://www.new-website.com$1
أو ربما نريد إعادة توجيه الصفحات الفردية على وجه التحديد. يمكننا إضافة القواعد مثل هذا:
Redirect 301 /page.html http://www.old-website/new-page.html
وبالنسبة للأخطاء ، يمكننا إعادة توجيه المستخدمين إلى صفحة 404 (ربما تكون مليئة بالعبارات والصور المتحركة):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* 404.html [L]
</IfModule>
أولاً نتحقق مما إذا كانت الوحدة النمطية mod_rewrite متاحة ، ثم يمكننا تشغيلها ، وإذا لم يتم العثور على الملف أو الدليل ، فإننا نرسل المستخدم إلى صفحة 404 الخاصة بنا. من الرائع أن تكون محتويات الصفحة التي يشاهدونها من ملف 404.html بينما يظل عنوان URL المطلوب كما هو.
إذا لم تكن مرتاحًا للتلاعب بملفات ".htaccess" ولديك WordPress مثبتًا ، فهناك ملحق أنيق يمكنه التعامل مع هذه الأشياء بالنسبة لنا.
يعيد توجيه Nginx
إذا كان الخادم الخاص بك يقوم بتشغيل Nginx كخادم ويب ، فيمكنك إضافة كتلة خادم للتعامل مع طلبات إعادة التوجيه هذه في ملف `nginx.conf`:
server {
listen 80;
server_name old-website.com;
return 301 $scheme://new-website.com$request_uri;
}
مرة أخرى ، نستخدم استجابة 301 HTTP ، وباستخدام متغير المخطط ، سنطلب http: // أو https: // اعتمادًا على استخدام موقع الويب الأصلي. قد يكون من الجيد إلقاء نظرة فاحصة على HTML5 Boilerplate nginx.conf للحصول على أفضل الممارسات حول الأشياء الأخرى ذات الصلة بـ Nginx.
عمليات إعادة توجيه Lighttpd
بالنسبة لتلك الخوادم التي تشغل خادم ويب Lighttpd ، يمكنك إجراء إعادة توجيه عن طريق استيراد الوحدة النمطية mod_redirect أولاً واستخدام url.redirect:
server.modules = (
"mod_redirect"
)
$HTTP["host"] =~ "^(www\.)?old-website.com$" {
url.redirect = (
"^/(.*)$" => "http://www.new-website.com/$1",
)
}
عمليات إعادة توجيه PHP
باستخدام PHP ، يمكننا استخدام وظيفة header ، وهي مباشرة تمامًا:
<?php
header('Location: http://www.new-website.com');
exit;
?>
يجب تعيين هذا قبل أي ترميز أو محتوى من أي نوع آخر ، ولكن هناك عقبة صغيرة واحدة. بشكل افتراضي ، ترسل الوظيفة استجابة إعادة توجيه 302 تخبر الجميع أن المحتوى قد تم نقله مؤقتًا فقط. بالنظر إلى حالة الاستخدام المحددة الخاصة بنا ، سنحتاج إلى نقل الملفات بشكل دائم إلى موقعنا الجديد على الويب ، لذلك سيتعين علينا إجراء إعادة التوجيه 301 بدلاً من ذلك:
<?php
header('Location: http://www.new-website.com/', true, 301);
exit();
?>
ستحل المعلمة "true" الاختيارية أعلاه محل الرأس الذي تم تعيينه مسبقًا والمُعامل 301 في النهاية هو ما يغير رمز الاستجابة إلى الرمز الصحيح.
تقوم روبي أون ريلز بإعادة التوجيه
class WelcomeController < ApplicationController
def index
redirect_to 'http://new-website.com', :status => :moved_permanently
end
end
في Rails 4 ، توجد طريقة أسهل للتعامل مع هذه الطلبات حيث يمكننا إضافة إعادة توجيه في ملف route.rb الذي يرسل تلقائيًا استجابة 301:
get "/blog" => redirect("http://new-website.com")
أو إذا أردنا إعادة توجيه كل مقالة في المدونة إلى منشورات على الموقع الجديد ، فيمكننا القيام بذلك عن طريق استبدال ما سبق بما يلي:
get "/blog/:post" => redirect("http://new-website.com/blog/%{post}")
عمليات إعادة التوجيه .NET
لم أكتب أبدًا أي شيء باستخدام .NET framework من قبل ولكن يبدو أن هناك وثائق واضحة على شبكة مطوري Microsoft.
عمليات إعادة التوجيه Node.js
فيما يلي إعداد محلي سريع للغاية يوضح كيفية عمل عمليات إعادة التوجيه مع Node. أولاً ، نقوم بتضمين وحدة http وإنشاء خادم جديد ، متبوعًا بالطريقة .writeHead ():
var http = require("http");
http.createServer(function(req, res) {
res.writeHead(301,{Location: 'http://new-website.com'});
res.end();
}).listen(8888);
إذا أنشأت ملفًا جديدًا يسمى index.js ولصق الرمز أعلاه ثم قمت بتشغيل node index.js في سطر الأوامر ، فستجد الإصدار المحلي من موقع الويب الذي يعيد التوجيه إلى new-website.com. ولكن لإعادة توجيه جميع المشاركات في قسم / blog ، سنحتاج إلى تحليل عنوان URL من الطلب باستخدام وحدة url سهلة الاستخدام الخاصة بـ Node:
var http = require("http");
var url = require("url");
http.createServer(function(req, res) {
var pathname = url.parse(req.url).pathname;
res.writeHead(301,{Location: 'http://new-website.com/' + pathname});
res.end();
}).listen(8888);
باستخدام وظيفة .writeHead () ، يمكننا بعد ذلك إرفاق اسم المسار من الطلب إلى نهاية سلسلة URL. الآن ستتم إعادة التوجيه إلى نفس المسار على موقعنا الجديد. ياي لجافا سكريبت!
يعيد توجيه القارورة
باستخدام إطار عمل Flask أعلى Python ، يمكننا ببساطة إنشاء مسار يشير إلى الصفحات الفرعية باستخدام وظيفة إعادة التوجيه ، ومرة أخرى يجب أن يكون الخيار 301 خيارًا يتم تمريره في النهاية لأنه تم تعيين الإعداد الافتراضي على 302:
إذا كنت تعرف أي حيل أخرى لإعادة توجيه صفحة ويب ، أضف تعليقًا أدناه وسأحدِّث هذه المشاركة بأحدث المعلومات.