فایل htaccess یکی از مهم ترین فایل های هر وبسایت اینترنتی می باشد که کاربرد های متنوعی دارد و از اصلی ترین موارد استفاده آن، مدیریت آدرس های URL وبسایت می باشد که ما در مقاله آموزش htaccess را در اختیار شما قرار می دهیم.
آموزش کار با Htaccess می تواند برای مواردی مثل: بهینه سازی برای موتور های جستجو، ریدایرکت آدرس های url و هنگام استفاده از گواهینامه های امنیتی SSL، بسیار کاربردی باشد
فایل htaccess یا Hypertext Access (اچ تی اکسز) یک فایل متنی با قابلیت کنترل صفحات وب می باشد نقطه “.” شروع و در وب سرور آپاچی فقط قابل اجراست.
پیشنهاد ما: آموزش WHMCS
نکات مقدماتی آموزش htaccess
htaccess زبان ارتباطی سایت با وب سرور می باشد و یادگیری آن یک ضرورت غیرقابل انکار است. با استفاده از این فایل، شما میتوانید برای سرور سایت خود قوانین تعیین کنید و تمام فایلها و دایرکتوری های سایت را کنترل کنید.برای بدست آوردن اطلاعات بیشتر درباره این فایل مقاله «htaccess چیست» منبع مناسبی می باشد.
htaccess به طور پیش فرض و مخفیانه در فایل public_html در هاست قرار دارد.برای راهنمایی درباره خارج کردن این فایل از حالت مخفی مقاله «نمایش فایل مخفی در هاست» راهنمای شما خواهد بود
قبل از انجام هرگونه تغییرات، یک نسخه بکاپ از آن تهیه کنید . هم چنین لازم است تغییرات را یک به یک انجام دهید و سایت را چک کنید، اگر مشکلی نبود سراغ تغییرات بعدی بروید از وارد کردن چندین دستور در htaccess پرهیز کنید.
آموزش htaccess برای افزایش امنیت
با افزودن کدهای مختلف به فایل htaccess. می توان کارهای متفاوتی انجام داد، بعضی از این اقدامات برای اهداف امنیتی هستند. در این بخش از مقاله آموزش htaccess چند نمونه از این اقدامات برای بهبود وضعیت امنیتی را می خوانید.
بلاک کردن دسترسی برخی IP ها به سایت
اگر بخواهید جلوی دسترسی یک IP مشخص یا یک رنج IP (محدوده ای از IP های مختلف) به سایت خود را بگیرید، یکی از روش های این کار، درج چند خط دستور ساده در فایل htaccess است.
برای اینکه جلوی دسترسی محدوده ای از IP ها را بگیرید کافی است دستوری مثل دستور زیر را وارد کنید:
order allow,deny
deny from 255.0.0.0
deny from 123.45.6.
allow from all
(محدوده IP ها را طبق نظر خود تعیین کنید، IPهای درج شده در این قسمت آزمایشی هستند)
دستور بالا به وب سرور آپاچی می گوید IP ها در محدوده تعیین شده را ممنوع الورود کند! اگر دقت کنید، در خط سوم، بخش چهارم IP (بعد از عدد ۶) نوشته نشده؛ این نشان می دهد که تمام IP های این رنج باید بلاک شوند.
پیشنهاد ما : آموزش Zone Editor
بلاک کردن همه IP ها به جز خودتان
گاهی اوقات برای انجام ویرایش هایی در سایت، لازم است دسترسی همه به جز مدیر سایت قطع شود. در این صورت، همه بازدیدکنندگان با خطای عدم دسترسی ۴۰۳ مواجه خواهند شد و تنها مدیر سایت که IP آن در دستور درج می شود به سایت دسترسی دارید.
برای این کار دستور زیر را به فایل htaccess سایت خود اضافه کنید:
order allow,deny
allow from 255.0.0.0
deny from all
فراموش نکنید به جای ۲۵۵.۰.۰.۰ باید آدرس IP خود را بنویسید.
بلاک کردن مرورگر آفلاین و ربات های مخرب
مرورگر آفلاین (Offline browser) نرم افزاری است که تمام لینک های بخش های مشخصی از سایت را یکباره دانلود می کند، تا کاربر نیاز نداشته باشد برای مطالعه مطالب سایت شما، مجددا آنلاین شود. این برنامه به تنهایی مخرب نیست و هیچ آسیبی به سایت شما نمی رساند اما اگر بخواهد حجم بالایی از داده های سایت شما را دانلود کند، بخش زیادی از منابع وب سرور را اشغال می کند و پهنای باند زیادی هم مصرف خواهد کرد.
ربات های مخرب همانطور که از نامشان پیداست بین فایل های سایت شما می خزند و هرکدام کارهای مختلفی انجام می دهند. مثلاً برخی از ربات ها دنبال اطلاعاتی مثل آدرس های ایمیل معتبر هستند و با جمع آوری آن ها سیلی از پیام های اسپم را به سمت ایمیلتان روانه می کنند. در این بخش از آموزش htaccess، روش های جلوگیری از بروز اینگونه مشکلات را در اختیارتان قرار خواهیم داد.
برای اینکه جلوی مرورگر آفلاین و ربات های مخرب را بگیرید، دستور زیر را به فایل .htaccess اضافه کنید.
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* – [F,L]
دستورات درج شده در لیست بالا اسامی انواع ربات ها می باشد که از این پس اجازه دسترسی به سایت شما را ندارند.درصورت تمایل می توانید نام ربات های دیگر را هم به آن ها اضافه کنید.
غیرفعال کردن نمایش دایرکتوری سایت به کمک htaccess
استفاده از قابلیت غیر فعال کردن نمایش دایرکتوری می تواند بسیار کاربردی و مفید باشد به طور مثال فرض کنید در مسیری از هاست خود فایل هایی ذخیره کردهاید که دوست ندارید برای دیگران نمایش داده شود یا دایرکتوری تصاویر سایت شما برای دیگران لیست شود برای جلوگیری از انجام این کار، کافی است دستور زیر را به فایل htaccess خود اضافه کنید.با اضافه کردن این دستور تمامی فایل هایی که در مسیر دایرکتوری htaccess قرار دارند نمایش داده نمیشوند.
IndexIgnore
نکته مهم: هر فایل htaccess در مسیر اصلی و مسیرهای زیرمجموعهاش اجرا می شود، پس اگر بخواهید دستوراتی مثل عدم نمایش یک دایرکتوری خاص را اجرا کنید، میتوانید در مسیر موردنظر فایل htaccess را ایجاد نمائید. وجود چندین فایل htaccess در هاست مشکلی ایجاد نخواهد کرد، تنها کافیست دستورات هرکدام از این فایل ها در دایرکتوری زیرمجموعه اعمال شود؛ به طور مثال اگر فایل htaccess در دایرکتوری publich_html قرار گرفته باشد، دستور عدم نمایش دایرکتوری به دلیل اهمیت publich_html موجب بسته شدن کل دایرکتوری ها خواهد شد.
عدم نمایش فایل های خاص در یک دایرکتوری
اگر بخواهید از نمایش فرمت خاصی از فایل ها جلوگیری کنید (مثلاً فقط فایل های zip یا jpeg یا هر چیز دیگری)، باید دستور زیر را وارد کنید:
IndexIgnore *.zip
.zip بیانگر فرمت فایلی است که نباید نمایش داده شود.
اگر بخواهید چند فرمت مختلف را لیست نکند باید آن ها را به شکل زیر به آخر این دستور اضافه کنید:
IndexIgnore *.zip *.jpg *.gif
آموزش دستور نمایش دایرکتوری در htaccess
در بعضی سرورها، تنظیمات به نحوی انجام شده است که هیچ کدام از دایرکتوری ها لیست نمی شوند. اگر در این موارد بخواهید یک دایرکتوری امکان لیست شدن توسط کاربران و نمایش را داشته باشد، باید دستور زیر را در فایل htaccess وارد کرده و فایل را در دایرکتوری مورد نظر قرار دهید:
Options +Indexes
جلوگیری از دسترسی به فایل های php includes
اگر در مسیری از هاست خود فایل های php includes دارید و نمی خواهید بازدیدکنندگان مستقیماً از طریق مرورگر به آن ها دسترسی داشته باشند، با ثبت این دستور در یک فایل htaccess و قراردادن آن در دایرکتوری مورد نظر، می توانید این کار را انجام دهید:
## Enable Mod Rewrite, this is only required once in each .htaccess file
RewriteEngine On
RewriteBase /
## Test for access to includes directory
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /includes/ .*$ [NC]## Test that file requested has php extension
RewriteCond %{REQUEST_FILENAME} ^.+\.php$
## Forbid Access
RewriteRule .* – [F,NS,L]
جلوگیری از دسترسی به php.ini و php.cgi
برای جلوگیری از دسترسی افراد متفرقه به این فایل ها کافی است دستور زیر را در یک فایل htaccess ثبت کنید:
## Enable Mod Rewrite, this is only required once in each .htaccess file
RewriteEngine On
RewriteBase /
## Test for access to includes directory
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /includes/ .*$ [NC]## Test that file requested has php extension
RewriteCond %{REQUEST_FILENAME} ^.+\.php$
## Forbid Access
RewriteRule .* – [F,NS,L]
جلوگیری از ارسال درخواست به سرور با کاراکترهای غیرمجاز
وقتی درخواستی به سرور ارسال می شود که شامل کاراکترهای غیر مجازی مثل علامت های خاص (^&*$) است، ممکن است هدف ارسال کننده درخواست حمله به سایت یا اجرای یک دستور غیرمجاز باشد. برای اینکه از ارسال چنین درخواست هایی به سرور جلوگیری کنید، باید دستور زیر را وارد یک فایل .htaccess کنید:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ [a-zA-Z0-9\.\+_/\-\?\=\&]+\ HTTP/ [NC]RewriteRule .* – [F,NS,L]
آموزش ریدایرکت با htaccess
ریدایرکت (Redirect) به معنای انتقال بازدیدکننده از یک صفحه به صفحه ای دیگر می باشد. این کار به دلایل مختلفی انجام می شود از جمله مهم ترین آن می توان به زمانی اشاره کرد که می خواهیم کاربر را از صفحه قدیمی به صفحه ای جدید منتقل کنیم. توضیحات کامل را می توانید در مقاله «ریدایرکت در وردپرس» مطالعه نمائید.
یکی از روش های این کار ریدایرکت با htaccess است. برای انجام آن باید مثل مراحل قبل یک فایل htaccess بسازید و دستور زیر را در آن وارد کنید:
Redirect /old_dir/ http://www.yourdomain.com/new_dir/index.html
در دستور بالا، به جای old_dir آدرس دایرکتوری قدیمی خود (مبدأ) را بگذارید و به جای عبارت new_dir، آدرس دایرکتوری جدید (مقصد) را. در نوشتن آدرس مبدأ نیازی نیست نام دامنه را بنویسید، اینطور فرض کنید که علامت / به جای نام دامنه شماست.
مثلاً
Redirect /Amoozeshe_htaccess/ http://www.yourdomain.com/Amoozeshe_htaccess_jadid.html
ضمیمه: آموزش ویرایش فایل در هاست و اضافه کردن کد
این بخش به عنوان ضمیمه به مقاله آموزش htaccess اضافه شد تا در صورت نیاز به راهنمایی در خصوص نحوه تغییر فایل ها در هاست، دسترسی آسانتری برای مطالعه داشته باشید.
نکته: ما برای آموزش تغییر و ویرایش فایل ها در هاست، با کنترل پنل cPanel آموزش می دهیم اما این موضوع در دایرکت ادمین، plesk و… تفاوت چندانی ندارد.
آموزش ویرایش فایل در cPanel
برای این کار ابتدا وارد کنترل پنل هاست خود می شویم و از آنجا وارد بخش file manager می شویم
وارد مسیری می شویم که فایل ما در آنجا قرار دارد و می خواهیم تغییرش دهیم. در اینجا ما فایل .htaccess را انتخاب کرده ایم که متناسب با آموزشمان باشد. روی آن راست کلیک کرده و گزینه Edit را انتخاب می کنیم.
می توانید با چپ کلیک آن را Select کنید و از منوی بالا گزینه Edit را بزنید.
فایل در ویرایشگر کنترل پنل باز می شود و آماده است که هر دستوری را در آن وارد کنید یا کدها را تغییر دهید. برای ذخیره تغییرات حتماً باید دکمه Save را بزنید.