سلام ، توی این آموزش قصد دارم طرق مختلف تنظیم htaccess در دایرکتوری های مختلف روی سرور رو بهتون نشون بدم ، امیدوارم که مفید واقع بشه . در این قسمت ابتدا فایل .htaccess را به شما معرفی خواهیم کرد وبه بررسی نکات مهمی خواهیم پرداخت که در تنظیمات، نصب و دیگر موارد لازم در ایجاد و نگهداری از سایت شما کاربرد دارند. فایل .htaccess در ریشه وب سایت شما قرار میگیرد. بعنوان مثال میتوانید به تصاویر زیر نگاه کنید که ترتیب قرارگیری فایلهای یک وب سایت را به شما نشان میدهند:
نکته مهمی که باید به آن دقت داشته باشید این است که فایل .htaccess غیر قابل مشاهده و مخفی است. و وب سرورها نیز به گونه ای پیکربندی میشوند که شما نمیتوانید این فایل را از طریق وب مشاهده نمایید. ضمن اینکه توجه داشته باشید که ابتدای نام این فایل یک نقطه قرار دارد.

فایل .htaccess چیست؟

اگر بخواهیم مختصر بگوییم، این فایل یک فایل متنی ساده است که میتوان در آن رهنودها ( directives) وب سرور را قرار داد. رهنمودهای سرور که در فایل .htaccess قرار میگیرند تنها بر روی وب سایتی که این فایل در ریشه آن قرار دارد اعمال میگردند و دیگر مثل فایلهای php.ini یا httpd.conf نیست که بر روی کلیه وب سایتهای روی یک وب سرور تاثیر بگذارد.

نکته: شما متیوانید در هر پوشه از وب سایتتان یک فایل .htaccess داشته باشید و بنابراین میتوانید برای بخشهای مختلف سایت خود تنظمیات جداگانه ای داشته باشید. بنابراین ممکن است که در یک وب سایت چندین فایل .htacces وجود داشته باشد.

دقت کنید که در صورتی که تنظیمات .htaccess همپوشانی داشته باشد، تنظمیاتی که در فایل .htaccess سطح پاییت است ارجحیت دارد. مثلا شما میتوانید در فایل .htaccess که در ریشه وب سایت شما قرار دارد (و ما از این به بعد این فایل را .htaccess اصلی خواهیم نامید) میتوانید اجازه دهید که ایندکس گذاری در سراسر وب سایت فعال باشد اما در یک پوشه بخصوص این امکان را غیرفعال کنید.

البته در نظر داشته باشید که خواندن و بارگذاری کردن تنظمیات از فایل .htaccess میزان ناچیزی بازدهی سایت را پایین خواهد آورد.

چه کارهایی را میتوان با فایل .htaccess انجام داد؟

 اغلب تنظمیات و رهنمودهایی که میتوان در فایل httpd.conf قرار داد را نیز میتوان درون فایل .htaccess نیز قرار داد. اما عمده موارد استفاده از این فایل به شرح زیر است :

 کنترل دسترسی :

 در فایل .htaccess میتوان دسترسی به فایلها و پوشه های وب سایت را محدود یا غیرمحدود ساخت. مثالی از این کنترل میتواند این باشد که شما درون سایت خود پوشه ای به نام includes دارید که میخواهید در آن اسکریپت هایی را قرار دهید که دیگر اسکریپت های سایت آنها را ضمیمه خود کنند. اما نمیخواهید کسی بتواند به طور مستقیم به این اسکریپتها دسترسی پیدا کند. برای انجام چنین کاری شما کافی است تا تنها یک فایل .htaccess به پوشه includes خود اضافه کنید و در آن این کد را اضافه نمایید:

که این کار باعث میشود همه دسترسی های مستقیم به این پوشه و فایلهای داخل آن محدود گردد. البته شما کارهای بسیار بیشتری میتوانید در این خصوص انجام دهید. مثلا دسترسی را به یک آدرس IP بخصوص محدود نمایید یا
مثلا به این کد دقت نمایید

این کار باعث میشود تا فایلهای درون پوشه فقط توسط آدرس IP ذکر شده به صورت مستقیم قابل دسترسی باشند. که در این مثال آدرس IP مربوطه آدرس شبکه محلی است که وب سرور در آن قرار دارد.
نکته: خطوطی که با # آغاز میگردند بعنوان توضیح تلقی شده و توسط وب سرور نادیده گرفته میشوند.
چنانچه بخواهید یک آدرس IP بخصوص را محدود نمایید میتوانید از کدی شبیه به این استفاده کنید

زمانی که شما به این شکل یک آدرس IP را محدود کنید، چنانچه فردی بخواهد با استفاده از آن آدرس IP وب سایت را مشاهده کند با خطای ۴۰۳ یا همان access denied مواجه خواهد شد.
البته این روش هرچند در بسیاری از مواقع راهگشاست اما در ادامه مقاله به بررسی مواردی خواهیم پرداخت که میتوان به کمک آنها این موارد را به طریق دیگری انجام داد

صفحات خطای سفارشی

 .htaccess فایلی است که اغلب برنامه نویسان و طراحان وب از آن بهره میبرند تا در هنگامی که کاربران در مشاهده سایت با خطایی ( از جمله یافت نشدن صفحه، عدم دسترسی و ..) مواجه شدند، به جای مشاهده صفحات خطای پیش فرض، بیک صفحه خطای دیگر که توسط خود آن برنامه نویسان طراحی شده و دارای ظاهر زیباتر و همچنین پیغام خطای مفهوم تر و کاربرپسندتری است به نمایش درآید

کار جالبی که میتوان در این زمینه انجام داد این است که در ریشه وب سایت پوشه ای به نام err داشته باشیم و با توجه به کد خطا، صفحه ای متناسب با آن طراحی و به همان نام در پوشه err ذخیره کنیم. مثلا برای خطای عدم پیدا شدن صفحه درخواستی که کد آن ۴۰۴ است، صفحه ای به نام ۴۰۴٫php باید ایجاد شود. سپس در فایل .htaccess تنظیمات زیر را وارد کنیم:

البته شما میتوانید صفحات خارج از وب سایت را نیز بعنوان صفحات خطای سفارشی معرفی کنید که البته انجام این کار توصیه نمیشود.

جالب اینجاست که شما میتوانید مستقیما از کدهای HTML نیز استفاده نمایید به شرطی که تمام کدهای HTML خود را در یک صفحه بنویسید. توجه داشته باشید که کد را با یک ” آغاز کنید اما در خاتمه از ” استفاده ننمایید

 پوشه های محافظت شده رمزدار (password protected directories)

 در برخی شرایط این نیاز احساس میشود که به محتویات برخی پوشه ها، تنها برخی کاربران خاص یا برخی دسترسی داشته باشند. برای انجام چنین کاری میتوانید از کدی شبیه به کد زیر استفاده نمایید

شما متیوانید از همین مکانیسم برای احراز هویت برخی انواع خاص از درخواستها ( requests ) نیز استفاده نمایید. مثلا در کد زیر تنظمیاتی صورت گرفته است که همه بتوانند از متدهای GET و PUT استفاده نمایند اما تنها دسته بخصوصی از کاربران بتوانند POST انجام دهند

توجه داشته باشید که شما برای ایجاد کلمه عبور برای یک کاربردر اینجا به نامMohammad  میتوانید از دستور زیر استفاده نمایید

htpasswd ابزاری است که به همراه Apache ارائه شده و برای ایجاد و به روز آوری کلمات عبور مورد استفاده قرار میگیرد. نکته این که در وب سرورهای Apache تحت ویندوز نیز همین فایل وجود دارد اما ممکن است در آدرس متفاوتی قرار داشته باشد. البته در هر حالت شما میتوانید از آدرسهای مطلق نیز استفاده نمایید:

دقت کنید که فایلی که در این مرحله ایجاد شده و کلمات عبور در آن نگهداری میشوند در این مثال .htpasses نام دارد. نکته ای که بد نیست مد نظر داشته باشید این است که وب سرور آپاچی فایلهایی که با نام .ht شروع میشوند را مخفی کرده و از آنها محافظت میکند. بنابراین این ایده خوبی است که شما فایلهای مهم و حساس خود را با نامهای اینچنینی آغاز نمایید. اگر چه اینکار الزامی نیست و شما هر نامی که بخواهید میتوانید به فایل مورد نظر انتساب دهید

زمانی که کاربران در سایت لاگین کردند شما میتوانید به متغیر محلی remote_user دسترسی داشته باشید تا به کمک آن عملیات مورد نظر خود را انجام دهید. مثلا کد زیر که در مورد آن بعدا توضیح خواهیم داد :

خوب توی پارت بعدی سعی میکنم به صورت جامع و کامل مبحث مربوط به htaccess رو جمع بندی کنم.

پیروز باشید.

 

نویسنده : محمد ورمزیار
ایمیل نویسنده : info@OSLearn.ir
منبع : وب سایت او اس لرن – http://oslearn.ir
از مطالب وب سایت راضی هستید ؟ رضایت خودتون رو با دونیت به ما اعلام کنید. لطفا برای دونیت روی آیکون زیر کلیک کنید.
حمایت مالی

درباره نویسنده :

محمد ورمزیار هستم معروف به N3td3v!l ، دانشجوی کارشناسی ارشد فناوری اطلاعات ، از سال 2006 تا به حال در حوزه لینوکس و شبکه تحت عنوان هک و امنیت فعالیت میکنم ، اهل تهرانم ، دارای مدارک و تجربه در زمینه های CEH ، Security ، CCNA routing ، LPIC ، RHCE ، unix & BSD ، ISMS و علاقه شدیدی به کار روی مباحث جدید توی حوزه لینوکس و یونیکس دارم .

تمام پست های من - وب سایت من