
ریدایرکت سایت با htaccess از طریق یک فایل مخفی درون روت هاست با نام htaccess. انجام میگیرد. ریدایرکت به معنی انتقال یا تغییر مسیر اجباری کاربران است که میخواهید به صورت موقت یا دائمی آنها را از یک صفحه به صفحات دیگر یا به طور کلی از یک دامنه به دامنه دیگری هدایت کنید.
تعیین وضعیت ریدایرکت برای صفحاتی که آدرس آنها تغییر میکند امری ضروری است. یکی از رایجترین دلایل استفاده از ریدایرکت مربوط به ایجاد محتوای تکراری است که باعث میشود سایت شما در کلمات کلیدی خاصی با چند صفحه رتبه بگیرد. در این حالت بهتر است که محتوای صفحات کاملا متفاوت باشند. در غیر اینصورت باید صفحهای که کم ارزشتر است به صفحه مهمتر انتقال یابد.
در ادامه این مقاله به معرفی حالتهای مختلف ریدایرکت htaccess میپردازم. اگر دامنه سایت شما تغییر کرده میتوانید از این حالتها استفاده کنید. مزیت استفاده از این روش استفاده از قطعه کدهایی است که به صورت دستهای صفحات با ساختار خاص را هدایت میکنند.
ریدایرکت چیست و چرا اهمیت دارد؟
همانطور که در مقالهی جداگانه ریدایرکت چیست توضیح دادم، ریدایرکت یا انتقال عبارت است از تغییر یک آدرس به درس جدید. به ین معنی که بخواهید کاربر سایت خود را از یک آدرس به آدرس دیگری منتقل کنید.
با این کار کاربر دیگر قادر به مشاهده صفحه فعلی نخواهد بود، حتی اگر آن صفحه وجود داشته باشد. بهجای آن به صورت اجباری به صفحه دیگری منتقل میشود.
تصور کنید یک مشاور املاک قصد نشان دادن یک واحد از ساختمانی را به مشتری دارد. اما پیش از آنکه به محل برسند، متوجه میشود همکارش در حال نشان دادن همان محل به مشتری دیگری است. در این شرایط وی مجبور میشود مشتری را به واحد دیگری هدایت کند. ریدایرکت کردن نیز دقیقا همین است.
انواع مختلف ریدایرکت کدامند؟
ریدایرکتها چند حالت دارند. یا شما میخواهید انتقال را موقتی انجام دهید که برای کارهایی همچون تعمیر صفحه یا تغییرات ساختاری مناسب است. یا اینکه میخواهید برای همیشه این انتقال انجام گیرد که در این صورت برای سئو و از دست ندادن رتبه در موتورهای جستجو باید این کار را انجام داد.
تعیین این وضعیتها از طریق کدهای استتوس HTTP صورت میگیرد که عبارتند از:
کد | نام | توضیح |
---|---|---|
۳۰۱ | Moved Permanently | ریدایرکت دائمی با قابلیت انتقال اعتبار سئو. |
۳۰۲ | Found / Moved Temporarily | ریدایرکت موقت بدون انتقال اعتبار سئو. |
۳۰۷ | Temporary Redirect | مشابه ریدایرکت ۳۰۲ با امکان حفظ متدهای HTTP. |
۳۰۸ | Permanent Redirect | مشابه ریدایرکت ۳۰۱ با امکان حفظ متدهای HTTP. |
توجه: هنگام ریدایرکت به آدرس جدید حتما وضعیت ریدایرکت را با یکی از حالتهای فوق تعیین کنید.
آموزش کامل ریدایرکت سایت با htaccess.
ریدایرکت آدرسهای سایت توسط روشهای مختلفی صورت میگیرد. اما یکی از بهترین آنها ریدایرکت htaccess است که توسط فایلی با نام htaccess.
که در روت هاست (مسیر public_html) قرار دارد صورت میگیرد.
با نوشتن کدهای دستوری درون این فایل میتوان انواع مختلفی از ریدایرکت را انجام داد. این فایل از Regex نیز پشتیبانی میکند که به شما اجازه میدهد بهصورت گروهی نیز آدرسهایی با پیشوند یا پسوند خاص را ریدایرکت کنید.

برای ریدایرکت htaccess کافی است وارد هاست خود شده و در مسیر public_html این فایل را برای ویرایش باز کنید. اگر فایل htaccess را در سی پنل مشاهده نمیکنید، از بالای صفحه روی دکمه Setting کلیک کرده و تیک گزینه Show Hidden Files را مانند تصویر زیر فعال کنید.

در صورت نداشتن این فایل نیز کافی است از بالای صفحه روی دکمه File کلیک کرده و سپس فایلی با همین نام را مانند تصویر زیر بسازید.

در کدهای معرفی شده، دامنه oldsite.com
مربوط به دامنه قدیمی و newsite.com
مربوط به دامنه جدید است. اگر دامنه شما تغییر کرده به این بخش از کدها توجه کنید.
۱. ریدایرکت سایت به دامنه جدید
اگر دامنه سایت شما تغییر کرده باید از این حالت استفاده کنید. با قرار دادن کد زیر درون این فایل دامنه قدیمی، کلیه آدرسهای سایت از دامنه قدیمی به دامنه جدید منتقل خواهد شد. این حالت برای ریدایرکت دائمی است که باید از استتوس کد ۳۰۱ برای انتقال اعتبار سئو استفاده کنید.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^oldsite\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.oldsite\.com$
RewriteRule ^(.*)$ https://newsite.com/$1 [R=301,L]
۲. ریدایرکت سایت به ساب دامنه
ممکن است به هر دلیلی سایت خود را به ساب دامنه منتقل کنید. با انجام این کار کلیه آدرسهای بعد از دامنه به آدرس ساب دامنه منتقل خواهد شد.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^oldsite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.oldsite\.com$
RewriteRule ^(.*)$ https://blog.oldsite.com/$1 [R=301,L]
۳. انتقال از ساب دامنه به دامنه اصلی
گاهی اوقات عکس حالت قبلی را نیاز دارید. مثلا پیش از این آدرس دامنه خالی بوده و صرفا روی یه ساب دامنه blog به انتشار مطالب میپرداختید که حالا میخواهید «همه آدرسهای ساب دامنه» به دامنه اصلی منتقل شود.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.oldsite\.com$
RewriteRule ^(.*)$ https://oldsite.com/$1 [R=301,L]
۴. ریدایرکت htaccess از دامنه به پوشه
گاهی اوقات لازم است که آدرسهای خود را از دامنه به پوشه خاصی انتقال دهید. برای این حالت نیز میتوانید از کد زیر استفاده کنید. آدرسی که در پوشه برای مثال زیر با نام blog درج شده، پوشهای با همین نام در مسیر public_html است.
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^(.*)$ /blog/$1 [R=301,L]
۵. انتقال سایت از ساب فولدر به دامنه
گاهی اوقات نیز میخواهید عکس حالت قبلی را انجام دهید. یعنی از آدرس یک پوشه درون هاست، کاربران را به آدرس دامنه اصلی منتقل کنید که کد زیر مناسب این حالت است. در این حالت «تمامی آدرسهای پوشه» به دامنه منتقل میشود.
RewriteEngine On
RewriteBase /blog/
RewriteRule ^(.*)$ https://oldsite.com/$1 [R=301,L]
۶. ریدایرکت یک صفحه خاص به آدرس جدید
اما اگر میخواهید صرفا صفحه خاصی را ریدایرکت کنید، میتوانید از این حالت استفاده کنید. در نمونه زیر آدرسی روی دامنه با نام old-page قرار دارد که مربوط به دامنه قدیمی است. آن را به دامنه دیگری با آدرس متفاوتتر هدایت کردهایم.
Redirect 301 /old-page https://newsite.com/new-page
۷. انتقال آدرس www با htaccess
یکی از نکات مهم در سئو سایت تعیین وضعیت استفاده یا عدم استفاده از WWW برای سایت است. در سیستمهای مدیریت محتوا همچون وردپرس این وضعیت از طریق تنظیمات عمومی سایت که مربوط به آدرس سایت و آدرس وردپرس است مشخص شده است.
فایل htaccess وردپرس نیز از طریق همین تنظیمات وضعیت www را کنترل میکند. اما اگر از سیستمهای مدیریت سایت دیگر یا سایتساز اختصاصی استفاده میکنید، میتوانید با کدهای زیر این وضعیت را تعیین کنید.
- حذف WWW: اگر نمیخواهید از www استفاده کنید از کد زیر استفاده کنید تا در صورت وارد شدن کاربران به این آدرس، آنها را به نشانی سایت بدون www هدایت کند.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.oldsite\.com$
RewriteRule ^(.*)$ https://oldsite.com/$1 [R=301,L]
- اضافه کردن WWW: اگر تصمیم دارید سایت شما دارای www باشد، از کد زیر استفاده کنید تا کاربرانی که بدون وارد کردن www وارد سایت میشوند به ساختار دارای www هدایت شوند.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^oldsite\.com$
RewriteRule ^(.*)$ https://www.oldsite.com/$1 [R=301,L]
۸. ریدایرکت HTTP به HTTPS
گاهی اوقات ریدایرکت به منظور تغییر پروتکل سایت صورت میگیرد که بعد از نصب SSL باید انجام داد. یعنی کاربران از آدرس http://site.com
باید به https://site.com
هدایت شوند. برای این حالت نیز میتوانید از کد زیر استفاده کنید.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
میتوانید این کار را با فعال کردن ویژگی Force HTTPS Redirect در هاست سی پنل نیز ایجاد کنید. کافی است در مدیریت هاست روی گزینه Domains کلیک کرده و سپس مانند تصویر زیر این گزینه را روی حالت on قرار دهید.

مزایا و معایب استفاده از ریدایرکت htaccess
- عدم نیاز به افزونه یا اسکریپت خاص
- بسیار سریع و سبک
- قابلیت استفاده از RegEx
- قابلیت کنترل روی کل دامنه، ساختار خاص یا تعدادی آدرس محدود
- فقط روی وبسرورهای آپاچی کار میکند.
- در صورت عدم آشنایی و استفاده از کد اشتباه ممکن است به طور کلی سایت لود نشود یا در چرخه ریدایرکت دائمی قرار بگیرد. البته با حذف یا اصلاح قطعه کد وارد شده مشکل رفع میشود.
- مناسب کاربران حرفهای است که قادر به استفاده صحیح از دستورات این فایل باشند.
جمعبندی نهایی
ریدایرکت با فایل htaccess سریعترین و بهترین روش هدایت کاربران و موتورهای جستجو به صفحات یا ساختار جدید است.
چه بخواهید به طور کلی دامنه سایت را تغییر دهید یا اینکه آدرس صفحات داخلی، پوشهها یا سابدامنهها روی دامنه تغییر کند باید ریدایرکت را انجام داد. نکته مهم در تعیین وضعیت استتوس کد است. اگر ریدایرکت دائمی نیست از حالت ۳۰۲ و اگر دائمی است از ۳۰۱ استفاده کنید.
در پایان فراموش نکنید که ریدایرکتهای انجام شده را تست کنید. برای این کار و اطمینان از اینکه درخواستهای شما کش نشده باشند میتوانید از سایت redirect-checker.org استفاده کنید که علاوهبر آدرس مقصد، نوع ریدایرکت را همراه با اطلاعات مفید دیگر مشخص میکند.