ریدایرکت چیست و چه تاثیری بر سئو دارد؟
اگر ریدایرکتها بهدرستی انجام شوند باعث میشود تا از دست رفتن رنک جلوگیری شده و به موتورهای جستجو کمک میکند تا تغییراتی که در سایت خود اعمال کردهاید را بفهمند.
ساختار و طراحی سایت ها بهمرورزمان تغییر میکند، بهمرورزمان برخی از صفحات آنها حذف میشوند و حتی ممکن است وبسایت به دامنه دیگری منتقل شود. ریدایرکت صحیح برای جلوگیری از از دست دادن رنکینگ و کمک به موتورهای جستجو برای درک بهتر تغییراتی که انجام دادهاید، اهمیت بسیاری دارد.
ریدایرکتها دارای کدی هستند که با عدد 3 شروع میشود (برای مثال 3XX). بااینکه امکان وجود 100 کد وضعیت مختلف وجود دارد اما فقط تعداد محدودی پیادهسازی شدهاند که دربردارنده اطلاعات خاصی هستند. در این مقاله تنها به کدهای ریدایرکت مرتبط با سئو میپردازیم.
دنیای بزرگ مخاطبای آنلاین رو از دست نده!
ریدایرکت 301: انتقال بهصورت دائمی
این کد ریدایرکت که بسیار نیز معروف است به کاربر میگوید که ریسورس یا صفحه منبع به آدرس دیگری تغییر کرده و برای مشاهده آن صفحه باید درخواستها از طریق URL جدید ارسال شود. برای مثال میتوان یک صفحه مقاله را در نظر گرفت که از آدرس articles/views/219 به blog/redirects منتقلشده است. هنگامیکه موتورهای جستجو با ریدایرکت 301 مواجه شوند، اعتبار صفحه قدیمی را به صفحه جدید منتقل میکنند.
قبل از ایجاد هر نوع تغییری، لازم است دقت کنید که چه هنگامی از ریدایرکت 301 استفاده میکنید. دلیل این امر این است که اگر بعداً نظرتان عوض شود و بخواهید ریدایرکت 301 را حذف کنید، URL های قدیمی شما ممکن است دیگر رتبه نگیرند.
حتی اگر ریدایرکت ها را جابجا کنید، کمکی به بازگشت صفحات قدیمی شما به موقعیت رنکینگ سابقشان نخواهد کرد. بنابراین موضوع اصلی این است که به خاطر داشته باشید که هیچ راهی برای بازگشت ریدایرکت 301 وجود ندارد.
بیشتر بخوانید: لینک سازی چیست و چرا مهم است؟
ریدایرکت ۳۰۷: ریدایرکت موقت
در استاندارد http 1.1 ریدایرکت 301 به معنای این است که آدرس بهطور موقت منتقلشده است و کاربر، رباتها و مرورگر باید از آدرس دیگری برای درخواستهای آینده استفاده کند.
برای سئو و بهینه سازی سایت، این به این معنی است که کاربر باید یک ریدایرکت را دنبال کند، اما موتورهای جستجو نباید لینکهای خود را در SERPs به صفحه جدید و موقتی بهروزرسانی کنند. در یک ریدایرکت ۳۰۷، رتبه صفحه از منبع اصلی به یک صفحه جدید انتقال پیدا نمیکند و دقیقاً معکوس ریدایرکت 301 است.
ریدایرکت 302: تغییر مسیر موقت
این به این معنی است که آدرسی که کاربر به دنبال آن است، در یک URL دیگر در نسخه 1.1.HTTP پیداشده است، اما بهطور موقت.
تفاوت ریدایرکت 302 و 307
302 و 307 تقریباً در همه موارد رفتار یکسانی دارند. اما کد وضعیت 302 الزاماً به معنی این نیست که کلاینت باید ریدایرکت را دنبال کند و اگر تصمیم به ماندن در آنجا بگیرد با ارور مواجه نخواهد شد.
کلاینتهای مدرن بهاحتمالزیاد مقصد جدید را دنبال میکنند اما برخی از کلاینتهای قدیمی ممکن است بهاشتباه در همان URL بمانند.
منظور از کلاینت مرورگرها و بات های موتورهای جستجو هستند که با توجه به کد وضعیت بازگشتی از سرور تصمیم میگیرند که چه رفتاری را از خود نشان دهند.
برخلاف کد وضعیت 302، کد وضعیت 307 تضمین میکند که متد درخواستی تغییر نخواهد کرد. برای مثال، ریکوئستهای GET در ریسورس جدید بهصورت GET و ریکوئست های POST نیز بهصورت POST باقی میمانند.
با یک کد وضعیت 302، برخی از کلاینتهای قدیمی یا دارای باگ، ممکن است متد را تغییر دهند که منجر به رفتار غیرمنتظرهای میشود. برای مثال از متد GET برای مشاهده صفحات استفاده میشود و از متد POST برای ذخیره دادههای فرم، درنتیجه اگر یک URL با هر متد رفتار مشخصی داشته باشد ممکن است هنگام پردازش و ذخیره دادههای فرم، نه تنها دادهها ذخیره نشوند، بلکه صفحهنمایش داده شود.
برای ریدایرکتهای موقت میتوانید از 302 یا 307 استفاده کنید، اما 307 توصیه میشود.
برای بسیاری از ریدایرکت هایی که بهصورت روزانه با آنها سروکار دارید، بسته به نوع تغییری که میخواهید بر روی وبسایت خود اعمال کنید، کدهای وضعیت 302 (انتقال دائمی) و 307 (انتقال موقت) را میتوانید استفاده کنید. در هر دو مورد، سینتکس ریدایرکت تغییری نمیکند.
اعمال ریدایرکت صفحات را میتوانید از طریق فایلهای کانفیگ سرور که در Apache فایل.htaccess و در Nginx فایل example.conf است را ویرایش کنید و اگر از وردپرس استفاده میکنید، اینکار را میتوانید از طریق پلاگین های مربوطه انجام دهید. در فریمورک های مختلف نیز اینکار بهراحتی از طریق سیستم روتینگ قابل انجام است. حتی اگر از وب اپلیکیشنی کاملاً اختصاصی استفاده میکنید، میتوانید به برنامهنویس خود بگویید کنترل ریدایرکت ها را در اختیار شما قرار دهد.
در تمامی موارد، سینتکس مشابهی برای نوشتن قوانین ریدایرکت وجود دارد. تنها تفاوت موجود در کامندهایی است که در فایلهای کانفیگ استفاده میشوند. برای مثال، تغییر مسیر Apache با کد زیر انجام میشود:
Options +FollowSymlinks
RewriteEngine on
RedirectMatch 301 ^/oldfolder/ /newfolder/
سینتکس ریدایرکت در Nginx به شکل زیر است:
rewrite ^/oldfolder/ /newfolder/ permanent;
کامندهای کدی که در وب سرورها، برای اعلام کد وضعیت و کامند اکشن به سرور استفاده میشوند، با یکدیگر تفاوت دارند، برای مثال:
کد وضعیت ریدایرکت سرور: 301 در مقابل permanent
کامند اکشن: RedirectMatch در مقابل rewrite
اما سینتکس (^/oldfolder/ /newfolder/) برای هر دو مشابه است.
در آپاچی، ماژولهای mod_rewrite و mod_alias (که وظیفه هندل کردن ریدایرکت ها رادارند) باید فعال باشند.
Options +FollowSymlinks
RewriteEngine on
تغییرات در .htaccess برای ریدایرکت
ریدایرکت یک صفحه به صفحه دیگر
متداولترین و پراستفاده ترین نوع ریدایرکت که هنگامی استفاده می شود که صفحه ای را حذف می کنید یا URL آن را تغییر می دهید. برای مثال، می گوییم /old-page/ به /new-page/ تغییر کرده است.
RewriteRule ^old-page(/?|/.*)$ /new-page/ [R=301,L]
یا
RedirectMatch 301 ^/old-page(/?|/.*)$ /new-page/
تنها تفاوت بین دو متد این است که مورد اول از ماژول mod_rewrite در آپاچی استفاده میکند و مورد دوم از ماژول mod_alias استفاده میکند. این کار با هر دو متد قابل انجام است.
عبارات باقاعده ^ بدین معنی است که URL باید با /old-page شروع شود، درحالیکه (/?|/.*)$ نشان میدهد که هر چیزی که بعد از /old-page/ با اسلش یا بدون آن بیاید، دقیقاً باید با /new-page/ منطبق باشد.
همچنین میتوانیم از (.*) استفاده کنیم (برای مثال ^/old-page(.*))، اما مشکل این است که اگر صفحه دیگری با URL مشابه مثلاً /old-page-other داشته باشید، هنگامیکه میخواهید تنها صفحه /old-page/ را ریدایرکت کنید، آن صفحه نیز ریدایرکت میشود.
URL های زیر به صفحات منطبق جدید منتقل خواهند شد:
/new-page/ |
/old-page/ |
/new-page/ |
/old-page |
/new-page/?utm_source=facebook.com |
/old-page/?utm_source=facebook.com |
/new-page/ |
/old-page/child-page/ |
ریدایرکت یک صفحه به صفحه جدید
کد زیر صفحه قدیم با هر متدی را به صفحه جدید منتقل می کند.
Redirect 301 /old-page/ /new-page/
بدون عبارات باقاعده تمامی URLها که کوئری استرینگ UTM دارند مانند /old-page?utm_source=facebook.com (که از آنجایی که URLها برای اشتراک گذاری در شبکه های اجتماعی استفاده می شوند، بسیار کاربردی است)، به 404 منجر خواهد شد.
حتی /old-page بدون اسلش پایانی به 404 منجر خواهد شد.
بیشتر بخوانید: فرایند سئو چقدر طول میکشید؟
ریدایرکت تمامی استثناها
فرض کنید مجموعه ای از URL هایی مانند /category/old-subcategory-1/ و /category/old-subcategory-2/ و /category/final-subcategory/ داریم و میخواهیم تمامی زیر دسته ها را به /category/final-subcategory/ ادغام کنیم. نیاز به قوانین all except داریم.
RewriteCond %{REQUEST_URI} !/category/final-subcategory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(category/). /category/final-subcategory/ [R=301,L]
در مثال فوق، می خواهیم تمامی زیردسته ها که بعد از /category/ می آیند ریدایرکت کنیم، مگر اینکه /category/final-subcategory/ باشد. همچنین قانون !-f را در خط دوم داریم که بدین معناست که هر فایلی از قبیل فایل های images و css و جاوا اسکریپت نادیده گرفته شود.
در غیر اینصورت، اگر فایلی مانند /category/image.jpg داشته باشید، درخواست لود این فایل نیز به /final-subcategory/ ریدایرکت می شود و این منجر به عدم بارگذاری تصویر می شود.
تغییر دایرکتوری
اگر یک دسته بندی را ساختاردهی مجدد کنید و بخواهید هر چیزی که بعد از دسته بندی قدیمی می آید به دسته بندی جدید منتقل شود، باید از قوانین زیر استفاده کنید:
RewriteRule ^old-directory$ /new-directory/ [R=301,NC,L]
RewriteRule ^old-directory/(.*)$ /new-directory/$1 [R=301,NC,L]
به این دلیل از $1 در هدف استفاده کردیم که به سرور بگوییم که باید هر چیزی در URL بعد از /old-category/ بیاید (مثلا، /old-category/subdirectory/) و آن را به مقصد (مثلا، /subcategory/) منتقل کند. در نتیجه، به /new-directory/subdirectory/ ریدایرکت خواهد شد.
در مثال فوق از دو قانون استفاده کردیم: یکی بدون اسلش پایانی در پایان و یکی با اسلش پایانی.
باید آنها را با استفاده از عبارات باقاعده (/?|.*)$ در پایان به یک قانون تبدیل کنیم، اما این کار منجر به مشکلاتی خواهد شد و // به پایان URL اضافه می کند که هنگامی که URL درخواستی فاقد اسلش پایانی و دارای کوئری استرینگ باشد (مثلا، /old-category?utm_source=facebook باید به /new-directory/?utm_source=facebook شود).
حذف یک کلمه از URL
فرض کنید 100 عدد URL در وب سایت شما وجود دارد که حاوی نام شهر tehran هستند و می خواهید آن را حذف کنید.
مثلا، برای http://yourwebsite.com/example-tehran-event/، قانون ریدایرکت به شکل زیر خواهد بود:
RewriteRule ^(.*)-chicago-(.*) http://%{SERVER_NAME}/$1-$2 [NC,R=301,L]
اگر URL مثال به شکل http://yourwebsite.com/example/tehran/event/ باشد، ریدایرکت به شکل زیر خواهد بود:
RewriteRule ^(.*)/chicago/(.*) http://%{SERVER_NAME}/$1/$2 [NC,R=301,L]
کنونیکالیزیشن Canonicalization
بدون شک داشتن URL های کنونیکال مهمترین بخش سئو و بهینه سازی سایت است. در صورت عدم وجود، ممکن است وب سایت شما با مشکل محتوای تکراری مواجه شود زیرا موتورهای جستجو با نسخه دارای www و بدون www یک URL مانند صفحه های مختلف با محتوای مشابه هستند.
بنابراین، الزامی است که سایت شما به انتخاب شما و تنها با یکی از این نسخه ها کار کند.
اگر می خواهید وب سایت تان با نسخه www اجرا شود، از قانون زیر استفاده کنید:
RewriteCond %{HTTP_HOST} ^yourwebsite\.com [NC]
RewriteRule ^(.*)$ http://www.yourwebsite.com/$1 [L,R=301]
برای نسخه بدون www نیز:
RewriteCond %{HTTP_HOST} ^www\.yourwebsite\.com [NC]
RewriteRule ^(.*)$ http://yourwebsite.com/$1 [L,R=301]
ریدایرکت اسلش پایانی url
همچنین اسلش پایانی بخشی از کنونیکالیزیشن است زیرا URLها با یک اسلش در پایان و بدون اسلش در پایان نیز به شکل متفاوت رفتار می کنند.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
کد فوق تمامی صفحات با الگویی مانند /example-page را به /example-page/ ریدایرکت می کند. شاید بخواهید اسلش را از پایان URL حذف کنید که نیاز به قانون زیر دارید:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
ریدایرکت HTTP به HTTPS
بعد از اینکه گوگل پیش قدم شد تا وب سایت هایی که از SSL استفاده می کنند را تشویق کند، انتقال به HTTPS یکی پراستفاده ترین ریدایرکت هایی است که اغلب وب سایت ها استفاده می کنند.
قانون بازنویسی زیر می تواند استفاده شود تا HTTPS را به صورت اجباری اجرا کند.
RewriteCond %{HTTP_HOST} ^yourwebsite\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.yourwebsite\.com [NC]
RewriteRule ^(.*)$ https://www.yourwebsite.com/$1 [L,R=301,NC]
اساسا، با استفاده از این قانون می توانید ریدایرکت نسخه www یا بدون www را با ریدایرکت HTTPS ترکیب کنید.
ریدایرکت از دامنه قدیمی به جدید
همچنین یکی از پراستفاده ترین ریدایرکتها هنگامی است که تصمیم می گیرید ریبرندینگ انجام دهید و نیاز به تغییر دامنه خود دارید. قانون زیر old-domain.com را به new-domain.com ریدایرکت کنید.
RewriteCond %{HTTP_HOST} ^old-domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old-domain.com$
RewriteRule (.*)$ http://www.new-domain.com/$1 [R=301,L]
این از دو مورد استفاده می کند: یکی نسخه با www و دیگری نسخه بدون www زیرا هر صفحه ای به دلایل تاریخی ممکن است به هر دو نسخه نسخه لینک ورودی داشته باشند.
اغلب صاحبان سایت از وردپرس استفاده می کنند و ممکن است نیازی به استفاده از فایل .htaccess برای ریدایرکت ها نداشته باشید اما در عوض اینکار را می توانید با افزونه ها انجام دهید.
هندل کردن ریدایرکت ها با استفاده از افزونه ها می تواند کمی با چیزی که در بالا گفتیم متفاوت باشد و به منظور اینکه قادر به هندل کردن عبارات باقاعده برای آن افزونه خاص باشید، ممکن است نیاز به خواندن مستندات آنها داشته باشید.
از میان افزونه های موجود، افزونه رایگانی با نام Redirection را توصیه می کنیم که پارامترهای زیادی برای کنترل قوانین ریدایرکت دارد و دارای مستندات مفید بسیاری است.
اشتباهات رایج در ریدایرکت
1. ریدایرکت تمامی لینک های شکسته 404 به صفحه اصلی
این مورد غالبا هنگامی اتفاق می افتد که در بررسی تمامی URLهای 404 تنبلی کنید و آنها را صفحات لندینگ پیج مناسب مپ نکنید.مطابق با اعلام گوگل، آنها هنوز رفتار 404 دارند.اگر صفحات زیادی مانند این دارید، باید یک صفحه 404 زیبا ایجاد کنید و کاربران را به تعامل وادارید تا صفحات بیشتری را ببینند یا چیز دیگری را بیابند که با استفاده از جستجو می توانند به آن برسند.
گوگل به شدت توصیه کرده است محتوای صفحه ریدایرکت شده باید معادل با صفحه قدیمی باشد. به عبارت دیگر، ریدایرکت این چنینی ممکن است به عنوان سافت 404 در نظر گرفته شوند و رنک آن پیج را از دست خواهید داد.
2. ریدایرکت های اشتباه صفحات موبایل
اگر URL متفاوتی برای وب سایت نسخه موبایل و دسکتاپ دارید (مثلا، yoursite.com برای دسکتاپ و m.yoursite.com برای موبایل)، باید اطمینان حاصل کنید که کاربران را به نسخه موبایل صفحات منتقل می کنید.
صحیح: yoursite.com/sport/ به m.yoursite.com/sport/
اشتباه: yoursite.com/sport/ به m.yoursite.com
همچنین، باید اطمینان حاصل کنید که اگر یک صفحه در دسکتاپ 404 است، در موبایل نیز باید 404 باشد.
اگر نسخه موبایلی برای صفحات ندارید، می توانید از ریدایرکت به نسخه موبایل اجتناب کرده و آنها را در صفحات دسکتاپ نگهدارید.
3. استفاده از Meta Refresh
امکان ریدایرکت با استفاده از تگ meta refresh مانند مثال زیر نیز وجود دارد:
<meta http-equiv=”refresh” content=”0;url=http://yoursite.com/new-page/” />
اگر این تگ را در /old-page/ وارد کنید، این صفحه بلافاصله به /new-page/ مننتقل خواهد شد. استفاده از این ریدایرکت توسط گوگل ممنوع نشده، اما به وضوح توصیه کرده است که از آن استفاده نشود.
مطابق با توئیت جان مولر، موتورهای جستجو شاید قادر به تشخیص این ریدایرکت به صورت مناسب نباشند. مشابه همین قضیه برای ریدایرکت های جاوا اسکریپت نیز وجود دارد.
4. ردایرکت بیش از حد (Too Many Redirects)
هنگامی که عبارت باقاعده اشتباهی دارید و در یک حلقه بی پایان قرار می گیرد، پیام زیر نمایش داده می شود.
معمولا، این اتفاق هنگامی می افتد که زنجیره ای از ریدایرکت ها دارید.
فرض کنید خیلی وقت پیش page1 را به page2 منتقل کرده اید. حالا احتمالا فراموش کرده اید که page1 منتقل شده است و تصمیم می گیرید که page2 را مجددا به page1 ریدایرکت کنید.
در نتیجه، اینکار را با قانونی مانند زیر انجام می دهید:
RewriteRule ^page1 /page2 [R=301,NC,L]
RewriteRule ^page2 /page1 [R=301,NC,L]
این مثال، یک حلقه بی پایان ساخته و اروری که در بالا نمایش داده شده را تولید می کند.
نتیجه گیری
هنگامی که یک ریدایرکت دائمی ایجاد می کنید، به راحتی و با حذف قابل بازگشت نیست (کلمه permanent یا دائمی به معنی دائمی سخت گیرنه است).
به همین دلیل است که هنگامی که گوگل یک ریدایرکت را تشخیص می دهد، پیج رنک را به صفحه جدید منتقل می کند و URL را برای استفاده از صفحه جدید در SERP ها تغییر می دهد.
در موردی که یک وب سایت بزرگ را با صدها صفحه از دامنه قدیمی به دامنه جدید منتقل می کنید و یا حتی از HTTP به HTTPS، توصیه می شود که ابتدا ریدایرکت موقت 302 استفاده کنید و بررسی کنید که قوانین ریدایرکت به درستی کار کنند و داده های گوگل آنالیتیکز را بررسی کنید که خروجی غیر منتظره ای نداشته باشند (برای مثال، برخی از خطاهای نحوی که منجر به صفحات 404 می شوند) سپس، ریدایرکت 302 را به دائمی 301 تغییر دهید.
در موردی که اشتباهی در ریدایرکت دائمی 301 انجام دادید و میخواهید به URL دیگری سوئیچ کنید، توصیه می شوند که از ریدایرکت های زنجیره ای اجتناب کرده و تمامی لینک ها را به URL جدید تغییر دهید.
منبع: www.searchenginejournal.com
موضوع: بهینه سازی سایت سئو تکنیکال
در بحث پیرامون این مقاله شرکت کنید