ریدایرکت چیست؟ آشنایی با ریدایرکت 301، 302 و 307
یکی از مسائلی که بعد از چند ماه از راهاندازی سایت حتما به آن احتیاج پیدا میکنید ریدایرکت دامنه است. ریدایرکت(redirect) به این معنی است که به دلایل مختلفی بخواهید کاربران خود را از صفحات فعلی که حالا به دلایل گوناگونی در دسترس نیستند به صورت موقت یا به صورت دائمی به صفحه دیگری منتقل کنید. موقتی یا دائمی بودن این انتقال برای موتورهای جستجو مشخص میکند که اعتبار و ارزش سئو که برای صفحه خود گرفتید آیا قرار است به صفحه جدید منتقل شود یا نه؟
در ادامه این مقاله میخواهم به بررسی انواع ریدایرکت سایت که شامل 301، 302، 307، 410 و 451 هستند بپردازم. برای هر یک از وضعیت کدهای HTTP که برای ریدایرکت صفحات وجود دارند ویژگی و ساختار آنها را بررسی کرده و در پایان نیز به نحوه استفاده از ریدایرکت در سایت میپردازم که میتوانید برای سایتهای وردپرسی از افزونه و برای سایر سیستمها از فایل htaccess. کمک بگیرید.
ریدایرکت یا Redirect چیست؟
ریدایرکت یا redirect همانطور که از معنای آن مشخص است به معنی انتقال دادن است. از این انتقال برای نرم افزارهای تحت وب استفاده میشود تا کاربران و ربات موتورهای جستجو را به صفحات دیگری منتقل کنند. این انتقال میتواند دلایل مختلفی داشته باشد که برخی از رایجترین آنها عبارتند از:
- تغییر ساختار پیوندهای یکتا در سایت
- تغییر دامنه سایت
- حذف یک نوشته و صفحه
- از دسترس خارج کردن یک صفحه به دلیل مشکلات حقوقی و قانونی
- تغییر سیستم مدیریت محتوای سایت و انتقال موقت کاربران به صفحهی دیگر
- و…
به هر دلیلی که بخواهید از ریدایرکت در سایت خود استفاده کنید، دو حالت وجود دارد که این دو حالت برای موتورهای جستجو مشخص میکند آیا ریدایرکت قرار است برای همیشه انجام گیرد یا اینکه موقتا این کار را انجام میدهید. برای کاربران در هر دو حالت ریدایرکت انجام میگیرد، اما در موتورهای جستجو موضوع کمی فرق میکند که باید وضعیت ریدایرکتها را به جهت حفظ سئو سایت مشخص کنید.
- ریدایرکت دائمی: وقتی از این نوع ریدایرکت استفاده کنید، به موتور جستجو اعلام میکنید که ضمن اینکه این صفحه برای همیشه به صفحه دیگری منتقل میشود، اعتباری که تاکنون برای آن صفحه کسب شده را هم باید به صفحه جدید منتقل کند. به عنوان نمونه اگر صفحهای با آدرس site.com/hosting/ داشتید که در آن خدمات هاست خود را معرفی کردید، ممکن است بخواهید به منظور کوتاه بودن آدرس این صفحه را به site.com/host/ تغییر دهید. در هنگام استفاده از ریدایرکت دائمی اعتبار از صفحه قدیمی به صفحه جدید منتقل شده و بعد از چند روز میبینیم که آدرسی که برای کلمات کلیدی مختلف در گوگل برای صفحه قدیمی در دسترس بود، به آدرس جدید تغییر داده شده و همچنان با همان کلمات رتبه صفحه حفظ شده است.
- ریدایرکت موقت: وقتی از این نوع ریدایرکت استفاده کنید برای گوگل و سایر موتورهای جستجو مشخص میکنید که این انتقال به صورت موقتی است و قرار نیست که اعتبار صفحات در نتایج جستو به صفحه دیگری منتقل گردد. در نتیجه تغییری در آدرس صفحه برای کلمات کلیدی که در صفحه قبلی داشتید رخ نخواهد داد. اما باید دقت کنید که این نوع ریدایرکت به مدت طولانی فعال نباشد.
حال که دانستید ریدایرکت چیست و چند حالت دارد، در ادامه به معرفی انواع ریدایرکت دامنه پرداخته و با بررسی شرایط و ویژگیهایی که دارند در پایان به نحوه استفاده کردن از آنها به کمک ابزارهای موجود میپردازم.
چند نوع ریدایرکت داریم؟
ریدایرکتها معمولا به سه دسته تقسیم میشوند که شامل 301، 302 و 307 هستند. اما دو حالت ریدایرکت هم داریم که نمیتوان گفت که ریدایرکت هستند، بلکه میتوان آنها را در این گروهبندی دستهبندی کرد. این دو گروه روی کد وضعیت 4XX قرار دارند که به ترتیب شامل موارد زیر هستند.
- ریدایرکت 410: با این نوع ریدایرکت میتوان مشخص کرد که یک محتوا یا یک صفحه برای همیشه حذف شده است.
- ریدایرکت 451: با این نوع محتوا هم میتوان مشخص کرد که یک محتوا یا صفحه به دلیل برخی مسائل قانونی وجود دارد، اما در دسترس نیست.
معمولا دو نوع ریدایرکت بالا کاربرد زیادی ندارند و در اکثر سایتها سعی میشود از سه نوع ریدایرکت رایجی که در گروه 3XX قرار دارند استفاده کرد که شامل موارد زیر هستند.
ریدایرکت 301
با استفاده از این ریدایرکت میتوانید کاربران را برای همیشه به آدرس دیگری منتقل کنید. این نوع از ریدایرکت اعتباری که در صفحه مبدا برای موتورهای جستجو وجود داشت را به آدرس مقصد منقل میکند و بعد از مدتی هم در نتایج جستجو خواهید دید که به صورت کامل صفحه مبدا از نتایج حذف میشود.
این حالت از ریدایرکت در چند حالت کاربرد دارد که بخواهید برای همیشه کاربران را از صفحه قدیمی به صفحه جدید منتقل کنید، ضمن اینکه اعتبار صفحه در گوگل نیز به صفحه جدید منتقل شود. رایجترین آنها عبارتند از:
- قدیمی شدن یک نوشته و عدم کاربردی بودن آن که میتوانید نوشته را به نوشته مرتبط منتقل کنید.
- تغییرات در ساختار آدرس سایت که باید کاربرانی که به لینکهای قدیمی مراجعه میکنند را به آدرس با ساختار جدید انتقال داد.
- تغییر دامنه سایت.
ریدایرکت 302
این نوع از ریدایرکت بر خلاف نوع 301 برای زمانهایی است که موقتا بخواهید کاربران را به صفحه دیگری منتقل کنید. مثلا ممکن است یک صفحهای در مورد خدماتی که ارائه میکنید داشته باشید که چند سالی است ظاهر آن را تغییر ندادید، در این حالت میتوانید برای اینکه به صورت کامل سایت را از دسترس خارج نکنید، این صفحه را به یک صفحه مرتبط به صورت موقت منتقل کنید تا پس از اینکه طراحی به اتمام رسید، دوباره به حالت قبل برگردانید. در این حالت اعتبار صفحه در موتورهای جستجو منتقل نمیشود و اعتبار صفحه نیز از بین نخواهد رفت؛ اما باید دقت کنید که مدت ریدایرکت زیاد طولانی نشود.
همانطور که گفتم ریدایرکتها هم به نوعی یک کد وضعیت HTTP از صفحه هستند. در ریدایرکت 302 این کد وضعیت برای ورژن 1.0 و 1.1 کار میکند و مشکلی هم در آن وجود ندارد.
ریدایرکت 307
این نوع ریدایرکت هم درست همان ویژگیهای ریدایرکت 302 را دارد؛ یعنی برای انتقال موقت استفاده میشود و اعتبار صفحه هم در موتور جستجو به صفحه جدید منتقل نمیگردد. اما تفاوتی که با ریدایرکت 302 دارد در این است که این کد وضعیت صرفا برای ورژن 1.1 کاربرد دارد. اگر کاربران یا موتورهای جستجو در نسخه HTTP 1.0 وارد آدرس ریدایرکت شده شوند، صفحه انتقال داده نخواهد شد.
فرق ریدایرکت 302 و 307 چیست؟ کدام بهتر است؟
همانطور که در توضیح ریدایرکت 302 و 307 عنوان کردم از هر دو برای انتقال کاربر به صفحه دیگر در حالتی استفاده میشود که موقتا بخواهید کاربران را هدایت کنید. قرار نیست اعتبار صفحه به صفحه دیگری منتقل شود که این موضوع را به موتورهای جستجو اعلام میکنید.
اما تفاوت اصلی در اینجاست که در ریدایرکت 302 امکان هدایت کاربران روی هر دو نسخه 1.0 و 1.1 پروتکل HTTP فراهم است در حالی که ریدایرکت 307 فقط در نسخه 1.1 کد وضعیت انتقال کاربر(Moved Temporarily) را انجام میدهد. بنابراین اگر از ریدایرکت 307 استفاده میکنید سعی کنید آن را به ریدایرکت 302 تغییر دهید که روی هر دو نسخه HTTP کار میکند.
چطور از ریدایرکت استفاده کنیم؟
برای استفاده از ریدایرکت بسته به اینکه از چه وب سروری استفاده میکنید و برنامه نویسی سایت شما نیز بر پایه کدام زبان است، روشهای متنوعی وجود دارد. اما رایجترین آنها برای سایتهای وردپرسی شامل استفاده از فایل htaccess. و یا استفاده از افزونه در وردپرس است.
روش اول: استفاده از فایل htaccess.
در این روش شما میتوانید آدرسهای خود را برای حالتی که ساختار کلی سایت تغییر یافته استفاده کنید. یعنی مثلا اگر پیش از این یک پیشوند برای نوشتههای خود داشتید حال بخواهید آن را تغییر داده یا اینکه حذف کنید. میتوانید به کمک کدهایی که وجود دارد ریدایرکت را در هر یک از حالتهای 301، 302 و 307 اجرا کنید.
اما مسئله اینجاست که چون فایل htaccess. در هر بار بازدید کاربر از سایت شما لود میشود تا تغییراتی اگر روی آن اعمال شده بر آن اساس سایت لود شود، از طرفی دیگر معمولا این فایل کش نمیشود؛ استفاده از این روش برای زمانهایی که تعداد ریدایرکت زیادی دارید توصیه نمیشود. چرا که بر روی سرعت سایت در زمانی که ریدایرکت باید انجام گیرد تاثیر بسیار زیادی خواهد داشت.
با زیاد شدن درخواستها سرور مدام باید درگیر ریدایرکت کاربران باشد. در چنین شرایطی اگر بتوانید ریدایرکتها را به صورت برنامه نویسی شده و سمت php اجرا کنید نتیجه بهتری خواهید گرفت.
روش دوم: استفاده از افزونه ریدایرکت وردپرس
شما میتوانید با جستجو در مخزن وردپرس دهها افزونه مختلف را برای ریدایرکت صفحات در وردپرس پیدا کنید. یکی از بهترین افزونههای redirection وردپرس است که علاوه بر امکان ریدایرکت این امکان را میدهد تا صفحات 404 را شناسایی کرده و با داشتن یک لاگ گزارش از این صفحات، اگر تعداد بازدید چنین صفحاتی بالاست آنها را به صفحات مرتبط ریدایرکت کنید که بازدیدکننده با صفحهای که وجود ندارد مواجه نشود.
رای استفاده از این افزونه کافی است روی دکمه زیر کلیک کرده و آن را در سایت خود نصب کنید. پس از فعال سازی میبینید که مشابه تصویر بالا منویی با نام redirection در منوی ابزارها پیشخوان وردپرس اضافه میشود که به کمک این منو میتوانید ریدایرکت صفحات در وردپرس را مدیریت و شخصی سازی کنید.
Regex در ریدایرکت چه کاربردی دارد؟
regex یا regexp طبق توضیحاتی که در ویکی پدیا داده شده مخفف عبارت regular expression است که از آن برای تطبیق رشتههای منظم در متن استفاده میشود. حال منظور از رشته در اینجا چیست؟ اجازه دهید با مثال شرح دهم. به این چند خط زیر دقت کنید:
https://site.com/tag/TAG_NAME/ https://site.com/category/CATEGORY_NAME/ https://site.com/blog/articles/POST_NAME/
اگر به این سه خط دقت کنید من در اینجا سعی کردم در خط اول آدرس برچسب وردپرس، خط دوم برای دستهبندی وردپرس و در خط سوم ساختار پیوند یکتا برای نوشتهها را نمایش دهم. همانطور که میبینید در این سه خط به ترتیب مقادیر tag، category و articles برای همه صفحات ما یکسان و ثابت هستند.
حالا ممکن است که بخواهید تغییراتی در پیوند یکتا وردپرس خود انجام داده و از نامک دلخواه برای برچسب، دستهبندی و حتی پیشوند نامک نوشتهها استفاده کنید. حالا به دنبال همان خطوط بالا تغییرات را من به شکل زیر در نظر میگیرم.
https://site.com/lable/TAG_NAME/ https://site.com/topic/CATEGORY_NAME/ https://site.com/blog/POST_NAME/
در اینجا من به ترتیب زیر عمل کردم:
- به جای استفاده از نامک tag برای برچسب وردپرس قصد دارم از نامک lable استفاده کنم.
- به جای استفاده از category در ساختار دستهبندی وردپرس میخواهم از نامک topic استفاده کنم.
- به جای اینکه قبل از هر نوشته هم مقدار articles که نشان از این داشت که نوشتههای من نوعی مقاله هستند، حالا میخواهم این نامک را حذف کنم و بعد از blog که یک وردپرس در ساب فولدر است، از همان نام نوشته برای آدرس مطالب استفاد کنم(تا چند سال پیش تصور غلط بر این بود که اگر نوع نوشتهها را برای گوگل مشخص کنید در سئو تاثیر بهتری دارد. برای همین از مقادیری مثل articles برای مقالات یا درج html. در انتهای صفحات که نشان دهند این یک صفحه وب است استفاده میکردند).
حالا که پیوندهای یکتا را تغییر دادم اگر قرار باید برای تکتک صفحاتی که این نوع سه ساختار را دارند، برای یک سایت که 10 دستهبندی دارد، باید 10 لینک ریدایرکت جدا جدا برای هر کدام ایجاد کنم، اگر 100 برچسب دارم باید همان تعداد برچسب را برای ساختار جدید آدرس تهیه کنم و اگر هم 200 نوشته دارم باید لینک تکتک مطالب را با ساختار جدید تهیه کنم. روشن است که هرچه تعداد بالاتر باشد به مشکل میخوریم.
در اینجا REGEX به شما کمک میکند تا به جای استفاده از این تعداد، صرفا یک ریدایرکت برای هر کدام تعریف کنید. در این صورت من به جای اینکه لازم باشد تک تک ریدایرکتها را درج کنم کافی است به کمک رجکس این کار را به شکل زیر انجام دهم.
https://site.com/tag/(.*)/ => https://site.com/lable/$1/ https://site.com/category/(.*)/ => https://site.com/topic/$1/ https://site.com/blog/articles/(.*)/ => https://site.com/blog/$1/
در اینجا به کمک (.*) مشخص کردیم که اگر بعد از هر ساختار مقداری آمده بود آن را به ساختار آدرس جدید ریدایرکت کن و مقداری که وجود داشته را به کمک $1 جایگزین کن.
نکته بسیار مهم: استفاده از regex موضوع بسیار مهمی است و وقتی از آن استفاده میکنید باید هر نوع ساختاری از سایت خود را بررسی کنید تا دچار مشکل نگردد. در اینجا نیز تنها یکی از مثالهای regex را معرفی کردم. بنابراین اگر به کلی تغییراتی در ساختار پیوند یکتا سایت خود دادهاید، حتما از یک فرد متخصص برای استفاده درست از regex ها کمک بگیرید. چرا که این روش برای همهی آدرسها جواب نمیدهد.
چه زمانی باید از ریدایرکت دامنه استفاده کنیم؟
حالا که تا اینجا با انواع ریدایرکت، نحوه استفاده و حالت رجکس آشنا شدید ممکن است این سوال برایتان پیش بیاید که اگر قرار باشد آدرس سایت خود را به دامنهی دیگری تغییر دهیم، باید از کدام نوع ریدایرکت و به چه روشی استفاده کرد؟
برای این حالت چون تغییر دامنه دائمی است حتما باید از ریدایرکت 301 استفاده کرد. مگر اینکه بخواهید مثلا سایت خود را از نظر برنامه نویسی به کلی تغییر دهید که در این حالت برخی سایتها برای اینکه از انتقال اطلاعات و اینکه برنامه نویسی سایت در همه بخشها به درستی انجام گرفته از ریدایرکت 302 برای مدت کوتاهی استفاده میکنند تا پس از تست و تایید نهایی، کدنویسی سایت را به صورت کلی جایگزین کنند.
اما اگر قرار باشد برای همیشه از آن استفاده کنید، باید از ریدایرکت 301 بر روی دامنه مبدا استفاده کنید. بهترین حالت استفاده هم همان استفاده از کدهای ریدایرکت در فایل htaccess. است. از آنجایی هم که در برخی وب سرورها این فایل کش نمیشود و در هر بار بازدید کاربران این فایل بررسی خواهد شد، بهتر است که به کمک شرکت هاستینگ خود کاری کنید که کش را روی این فایل فعال کنید تا در هر بار بازدید از دامنه توسط بازدیدکنندههای ثابت ضرورتی به بررسی دوباره این کد نباشد و ریدایرکت نیز در زمان کوتاهتری انجام گیرد.
جمع بندی
در این مقاله جامع به بررسی redirect پرداخته و با بررسی انواع ریدایرکت دامنه که برای حالتهای 301، 302 و 307 وجود دارند به شما آموزش دادم که در شرایط مختلف باید از کدام نوع ریدایرکت برای صفحات خود استفاده کنید. سپس به معرفی تفاوتهای هر کدام از این نوع ریدایرکتها پرداخته و در نهایت نیز به معرفی روشهایی برای استفاده از ریدایرکت پرداختم.
از آنجایی که استفاده از ریدایرکت در سایت موضوع مهمی است و اگر به درستی از آن استفاده نکنید، سئو سایت شما را تحت تاثیر قرار خواهد داد سعی کردم روشهایی که استفاده از آنها سادهتر است را معرفی کنم. در پایان نیز به معرفی استفاده از REGEX در ریدایرکت صفحات پرداختم که به کمک آن میتوانید ساختارهای منظم خود را ریدایرکت کنید.
در صورتی که هر سوال یا مشکلی در خصوص استفاده از ریدایرکت در سایت دارید، میتوانید از بخش نظرات همین مقاله ارسال کنید تا شما را راهنمایی کنم. موضوع ریدایرکت بیش از این پیچیده است که در اینجا سعی شد کلیت آن و میزان قابل توجهی از آن که در سایتها استفاده میشود مورد بررسی قرار گیرد.
سلام
ممنون از مقاله خوب و کارامدتون
من CMS وبسایتم رو از پرستاشاپ به وردپرس تغییر دادم، وقتی انتقال تمامی محصولاتم انجام شد عنوان product به url تمامی محصولاتم اضافه شد حلا من قصد دارم اونهارو به صورت دسته جمعی ریدایرکت 301 کنیم، و از regex برای این کار استفاده کنم، من قصد دارم عنوان product رو به همه آدرس تمامی صفحاتم اضافه کنم ولی نمیدونم باید در کادر مبدا و مقصد قسمت regex افزونه yoast چه عنوان هایی رو برای این کار وارد کنم تا ریدایرکت regex انجام بشه، لطفا راهنمایی بفرمایید
آدرس test.com/name product
آدرس که میخوام به اون ریدایرکت کنم test.com/product/name product
درود کاوه جان
خوشحالم که براتون کاربردی بوده. شما میتونید کد زیر رو به فایل htaccess. هاست اضافه کنید.
یا اینکه برای ریدایرکت در یوست از حالت زیر استفاده کنید:
آدرس مبدا رو برابر با مقدار زیر قرار بدین
آدرس مقصد رو هم برابر با مقدار زیر قرار بدین
اگر خطایی مشاهده کردید به جای ^ آدرس دامنه رو همراه با پروتکل http یا https قرار بدین.
تست کنید اگر موردی بود در همینجا مطرح کنید راهنمایی کنم.