نکته‌هایی درباره‌ی Redirect یا تغییر مسیر صفحات وب

تغییر مسیر - Redirect

گاهی لازم است تا کاربر به دلایل مختلف، صفحه‌ای متفاوت با آنچه را که درخواست کرده مشاهده کند
مثلا هنگامی که می‌خواهد به یکی از صفحات داخلی دسترسی پیدا کند در حالی که این اجازه را ندارد یا هنگامی که اطلاعات ورود را به درستی وارد کرده است و باید به صفحه‌ی اصلی سایت هدایت شود.

تغییر مسیر یا Redirect از روش‌های مختلفی امکان‌پذیر است. در این نوشته به تغییر مسیر از طریق سرآمد پاسخ( header ) می‌پردازیم و از روش‌های موجود در HTML و JavaScript چشم‌پوشی می‌کنیم.

تغییر مسیر کاربر در php با استفاده از دستور زیر امکان‌پذیر است:

header( "Location: http://example.com" );

هرچند مطابق استاندارد، تعیین مسیر کامل صفحه‌ی هدف الزامی است، با این حال مرورگرها از نشانی‌های مرتبط یا Relative هم پشتیبانی می‌کنند.

وضعیت‌های مختلفی در هنگام تغییر مسیر وجود دارند که می‌توانند به مرورگر و موتورهای جستجو، اطلاعاتی تکمیلی ارائه دهند.
در php این کد وضعیت از دو روش قابل ارسال است.
روش اول فراخوانی دستور header برای بازنویسی Status:

header( "Status: 300 Multiple Choices" );
header( "Location: http://example.com" );

و روش دوم: استفاده از پارامتر سوم دستور header برای تعیین وضعیت:

header( 'Location: temp.html', true, 300 );

مهم‌ترین وضعیت‌های تعریف شده برای تغییر مسیر عددهای ۳۰۰، ۳۰۱، ۳۰۲، ۳۰۳، ۳۰۷ و ۳۰۸ هستند که شرح آن را در ادامه مشاهده خواهید کرد.

  • ‎300 Multiple Choices: هنگامی مورد استفاده قرار می‌گیرد که صفحه‌ی مقصد حاوی اطلاعاتی مرتبط با صفحه‌ی فعلی است. یا اطلاعات صفحه‌ی فعلی را به شکلی دیگر ارائه می‌دهد. مثلا فرمت فایل صوتی را تغییر می‌دهد
  • ‎301 Moved Permanently: این صفحه به صورت دائم منتقل شده است. مرورگر و موتورهای جستجو ممکن است دیگر صفحه‌ی اصلی را درخواست ندهند
  • ‎302 Found: صفحه‌ی فعلی به صورت موقت به نشانی جدید منتقل می‌شود. مرورگرها ممکن است تا مدتی نشانی قبلی را درخواست ندهند. این وضعیت در php پیش‌فرض است
  • ‎303 See Other: همانند وضعیت قبلی، با این تفاوت که مرورگرها تغییر مسیر را در Cache ذخیره نمی‌کنند و هربار درخواست به صفحه‌ی قبلی ارسال می‌شود. به علاوه درخواست جدید بدون توجه به نوع درخواست اصلی، در حالت GET ارسال می‌شود
  • ‎307 Temporary Redirect: تغییر مسیر موقت، با این تفاوت که درخواست از هر نوعی که باشد، با همان نوع در نشانی جدید تکرار می‌شود. مثلا اطلاعات ارسالی ورود کاربر، به همان صورت به نشانی جدید هدایت خواهند شد
  • ‎308 Permanent Redirect: تغییر مسیر دائمی و با نکته‌ی گفته شده در وضعیت ۳۰۷. یعنی درخواست ارسالی به صفحه‌ی جدید، با همان نوع و اطلاعات درخواست اصلی خواهد بود

استفاده از وضعیت مناسب در هنگام تغییر مسیر می‌تواند در رتبه‌ی صفحات شما در موتورهای جستجو( SEO ) و همچنین عملکرد صحیح آن در مرورگرهای مختلف اثربخش باشد، به علاوه می‌تواند انجام برخی کارها را ساده‌تر کند.

منبع: ویکیپدیا و راهنمای php

این نوشته در HTML, PHP, SEO, برنامه‌نویسی ارسال و , برچسب شده است. افزودن پیوند یکتا به علاقه‌مندی‌ها.

۲ دیدگاه برای نکته‌هایی درباره‌ی Redirect یا تغییر مسیر صفحات وب

  1. فرزاد می‌گوید:

    سلام

    من بعد از ریدایرکت در لاگ های سایت به این پیام برخورد کردم
    Server cannot set status after HTTP headers have been sent.

    باید چیکار کنم

    این هم خوندم اما جواب نگرفتم
    http://stackoverflow.com/questions/29709477/server-cannot-set-status-after-http-headers-have-been-sent-web-api-cors

    • امیرمسعود ایرانی می‌گوید:

      با سلام
      به احتمال زیاد در کدهایی که نوشتید، قبل از اینکه دستور Redirect را به مرورگر ارسال کنید، محتوای سایت شما ایجاد شده است
      دستوراتی که Header را تغییر می‌دهند باید قبل از ایجاد محتوا فراخوانی شوند

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>