فایل htaccess. یک فایل پیکربندی مهم در وب سرور Apache است که به مدیر وبسایت اجازه میدهد تنظیمات مختلفی را بدون نیاز به تغییر در فایل های اصلی سرور اعمال کنند. این فایل در ریشه دایرکتوری وبسایت قرار دارد و میتواند برای انجام وظایفی مانند مدیریت ریدایرکت ها، بهینه سازی امنیتی، جلوگیری از دسترسی های غیرمجاز، فشرده سازی فایل ها و کشینگ استفاده شود. یکی از مهمترین کاربردهای آن، ریدایرکت در فایل htaccess است. ریدایرکت (Redirect) به معنای هدایت خودکار کاربران و موتورهای جستجو از یک آدرس به آدرس دیگر است. این قابلیت در مواردی مانند تغییر آدرس صفحات، تغییر دامنه، انتقال از http به https و بهینه سازی ساختار URLها بسیار کاربرد دارد.
در این مقاله به انواع ریدایرکت ها در فایل htaccess میپردازیم و نحوه ریدایرکت در فایل htaccess را به شما آموزش میدهیم.


انواع ریدایرکت در فایل htaccess
با استفاده از فایل .htaccess میتوان چندین نوع ریدایرکت انجام داد. مهم ترین انواع ریدایرکت هایی که میتوان با htaccess پیاده سازی کرد عبارتند از:
- ریدایرکت 301
- ریدایرکت 302
- ریدایرکت 307
- ریدایرکت http به https
- ریدایرکت دامنه
- ریدایرکت به نسخه www یا بدون www
- ریدایرکت تمام درخواست ها به صفحه اصلی
آموزش ریدایرکت از طریق فایل htaccess
برای دسترسی به فایل htaccess. در سیپنل وارد بخش File Manager و سپس public_html شوید. به صورت پیش فرض این فایل مخفی میباشد. در این صورت با انجام تنظیمات مانند تصویر زیر میتوانید این فایل را مشاهده کنید.


حالا روی فایل راست کلیک کرده و گزینه edit را بزنید. در پنجره باز شده روی دکمه edit کلیک کنید تا بتوانید فایل را ویرایش کنید.
ریدایرکت 301 (دائمی)
Redirect 301 /oldpage.html /newpage.html
ریدایرکت 302 (موقتی)
ریدایرکت 302 برای انتقال موقتی یک صفحه، مثلا هنگام انجام تغییرات در سایت، استفاده میشود.
Redirect 302 /oldpage.html /newpage.html
ریدایرکت 307 (موقتی با حفظ متد درخواست)
ریدایرکت 307 مشابه 302 است اما متد درخواست (POST, GET) را حفظ میکند.
Redirect 307 /oldpage.html /newpage.html
ریدایرکت HTTP به HTTPS
این ریدایرکت برای اجباری کردن استفاده از SSL و انتقال کاربران از نسخه HTTP به HTTPS است. برای این ریدایرکت در خط اول فایل htaccess دستورات زیر را وارد کنید.
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/%{REQUEST_URI} [R,L]
البته دقت داشته باشید دستورات بالا برای سرورهایی است که از وب سرور لایت اسپید استفاده میکنند. در صورتی که از وب سرور لایت اسپید استفاده نمیکنید، میتوانید دستورات زیر را در خط اول فایل وارد کنید.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
در دستورات بالا R نشان دهنده ریدایرکت است که به صورت پیش فرض 302 (موقتی) در نظر گرفته شده است. اگر بخواهید ریدایرکت به صورت دائمی باشد باید R=301 قرار دهید.
ریدایرکت دامنه
این ریدایرکت باعث انتقال تمام صفحات سایت به دامنه جدید میشود. در واقع وقتی بخواهید کل سایت را به دامنه جدید منتقل کنید باید از این ریدایرکت استفاده کنید. به عنوان مثال برای تغییر دامنه از yourdomain.com به yourdomain.ir و عدم تمایل به استفاده از دامنه قدیمی، ریدایرکت 301 را برای کل دامنه تنظیم کنید. با این روش همه لینک های قدیمی به دامنه جدید یعنی yourdomain.ir منتقل میشوند. فقط کافیست دستور زیر را در خط اول فایل htaccess قرار دهید.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteRule ^(.*)$ https://yourdomain.ir/$1 [L,R=301]
ریدایرکت به نسخه www یا بدون www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^ yourdomain.com [NC]
RewriteRule ^(.*)$ http://www. yourdomain.com /$1 [L,R=301]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www. yourdomain.com [NC]
RewriteRule ^(.*)$ http:// yourdomain.com /$1 [L,R=301]
ریدایرکت تمام درخواست ها به صفحه اصلی
وقتی بخواهید تمام URLهای سایت به صفحه اصلی هدایت شوند باید دستورات زیر را در htaccess وارد کنید.
RewriteEngine On
RewriteRule ^(.*)$ https://yourdomain.com/ [L,R=301]
با استفاده از روش های بالا میتوانید انواع ریدایرکت در فایل htaccess را پیاده سازی کنید و ساختار آدرس های سایت خود را بهینه نمایید.
تفاوت بین Redirect و RewriteRule
دستور Redirect برای انجام ریدایرکت های ساده و معمولی استفاده میشود. این دستور به طور مستقیم URL قدیمی را به یک URL جدید هدایت میکند. اما قابلیت بسیار کمی برای انجام پردازش های پیچیده بر روی URLها دارد و تنها قادر است URLهای کامل را هدایت کند و نمیتواند شرایط پیچیده تری مانند بررسی شرایط مختلف را در نظر بگیرد.
دستور RewriteRule از ماژول mod_rewrite در Apache استفاده میکند و نسبت به دستور Redirect بسیار انعطاف پذیرتر است. این دستور میتواند شرایط پیچیده و قوانین خاص را در نظر بگیرد و ریدایرکت های دقیقتری را انجام دهد. دستور RewriteRule به شما این امکان را میدهد که به راحتی بر اساس الگوهای خاص (regular expressions) URLها را هدایت کنید؛ RewriteRule میتواند از شرط ها با استفاده از RewriteCond برای بررسی و اعمال شرایط مختلف استفاده کنید. همچنین قابلیت ریدایرکت های داینامیک مانند هدایت صفحات بر اساس پارامترهای URL را فراهم میکند که با دستور Redirect نمیتوانید به راحتی آن ها را مدیریت کنید. استفاده از RewriteRule به شما این امکان را میدهد که از ریدایرکت های حلقوی جلوگیری کنید. به عنوان مثال، اگر صفحهای از قبل ریدایرکت شده باشد، میتوانید از اجرای دوباره آن جلوگیری کنید.
بدون دیدگاه