.htaccess یک فایل پیکر بندی برای وب سایت هایی است که از سرور آپاچی استفاده می کنند. وقتی این فایل در یکی از پوشه های وب سایت قرار می گیرد، وب سرور آپاچی بررسی می کند که چه دستوراتی در این فایل وجود دارد و بعد طبق این دستورات، آن قسمت از سایت که htaccess در آن قرار دارد را پیکر بندی می کند. این فایل می تواند برای فعال و یا غیر فعال کردن یک سری از توابع و ویژگی های وب سرور آپاچی مورد استفاده قرار بگیرد.
فایل .htaccess یک فایل ساده اسکی (ASCII) میباشد که میتوانید آن را به وسیله نرمافزارهای متنی ساده نظیر Notepad و یا SimpleText به وجود آورید. دقت داشته باشید که این فایل دارای هیچ نامی نمی باشد و فقط دارای پسوند است که پسوند آن، htaccess میباشد. برای درست کردن این فایل میتوانید فایل متنی خود را که مثلا به صورت test.txt می باشد، تغییر نام داده و آن را به صورت .htaccess درآورید.
تذکر: اگر از ویندوز استفاده می کنید و هنگام تغییر نام دادن فایل به .htaccess، پیغام خطایی مبنی بر اینکه «می بایست برای فایل خود نامی را اختیار کنید» دریافت می کنید، فایل را بر روی سرور آپلود کرده و سپس در سرور آن را تغییر نام دهید. این کار به وسیله نرمافزارهای FTP نظیر CuteFTP یا AbsoluteFTP بسیار ساده می باشد.
در هنگام استفاده از فایل .htaccess دانستن چهار نکته از اهمیت به سزایی برخوردار است:
نکته اول: فایل .htaccess را می بایست به صورت ASCII آپلود کرده و مجوز دسترسی به آن را بر روی 644 (یا rw-r–r–) تنظیم نمایید.
نکته دوم: فایل .htaccess را میتوانید به پوشه های مختلفی اعمال نمایید. به عنوان مثال اگر آن را بر روی root آپلود نمایید، تنظیمات آن به کل وب سایت اعمال خواهد شد و اگر آن را درون پوشهای نظیر images/ آپلود نمایید، تنظیمات آن به پوشه images و زیرپوشه های آن اعمال خواهد شد.
نکته سوم: هر htaccess را می بایست درون یک خط تایپ نمایید. یعنی در انتهای هر دستور، می بایست یکبار کلید Enter را فشار دهید.
نکته چهارم: به دلیل آنکه نحوه پیکربندی این فایل مانند پیکربندی فایل اصلی سرور (httpd.conf)است تصمیمات بر اساس شرایط اخذ می شود. البته تمامی امکانات httpd.conf را شامل نمی شود!
استفاده از این فایل در همه موارد پیشنهاد نمی شود زیرا امنیت وب سرور را تحت شعاع قرار می دهد. اما در مواقعی که سرور به صورت اشتراکی و اصطلاحا share شده خدمت رسانی می کند و تعداد زیادی سایت برروی آن قرار دارد پیشنهاد آن است که از فایل htaccess استفاده شود. زیرا هر سایت باید توانایی پیکر بندی قسمت مربوط به خود را دارا باشد.
دستوراتی که در یک فایل htaccess مورد استفاده قرار می گیرند، شامل فرامینی جهت کنترل موارد زیر هستند:
- –تصدیق هویت (Authentication) و کنترل دسترسی به دایرکتویرها با تعریف نام کاربری و کلمه عبور در فایلهای htpasswd.
- – انتقال و هدایت صفحه به مسیر جدید.
- -جلوگیری و یا کنترل نمایش لیست فایلهای دایرکتوری در مورد تمام فایلها و یا فقط برخی از آنها.
- -کنترل و یا مسدود کردن دسترسی IP های تعیین شده به محتوای وب.
- -تعیین نام فایل Index پیشفرض.
- -تعیین محتوا و صفحاتی جهت نمایش در حالات بروز خطاهای وب (مانند ۴۰۱، ۴۰۲، … ۵۰۵).
- -جلوگیری از عمل hotlink یا نمایش تصاویر موجود در دایرکتوریها در وبسایتهای دیگر.
- …….
قلب وب سایت خود را تحت کنترل بگیرید!
ریدایرکت-Redirects
شاید تا به حال برایتان اتفاق افتاده باشد که به وب سایتی مراجعه کرده باشید و سپس متوجه شوید که آدرس وبسایت به طور اتوماتیک عوض شده و در واقع شما به آدرس دیگری ارجاع داده شده اید. برای اینکار میتوانید از دستور Redirect استفاده نمایید:
Redirect /OldDir/OldFile.html http://www.domainname.com/newdir
حالت کلی دستور به شرح زیر است
Redirect oldlocation newlocation
همچنین می توان همه کاربران را بجز یک IP خاص به صفحه مورد نظر ریدایرکت کرد
ErrorDocument 403 http://www.yahoo.com/ Order deny,allow Deny from all Allow from IP
تغییر صفحات خطا
با این کد هم برای خطای 404 یا 500 و … به دلخواه یه صفحه طراحی کنید و وقتی اون خطاها رخ داد صفحه خودتون رو نمایش بدید.
ErrorDocument errornumber /filename.html
به جای errornumber شماره خطا را می نویسید اصولا خطای 404 زیاد اتفاق میفتد بنابراین میتوانید شماره 404 را بنویسید .
در مورد شماره پیغام خطاها هم کمی بگویم :
400این پیغام اصولا زمانی ظاهر می شود که کاربر ادرس اشتباهی رفته باشد
401وقتی کاربر به دایرکتوری و یا جایی میرود که اجازه ورود به انرا ندارد
403وقتی فایل طوری تنظیم شده است که کاربر اجازه دسترسی به ان را ندارد
500internal server error اشکال عموما از اسکریپت های داخلیست
جلوگیری از لیست شدن محتویات یک پوشه
بسیاری از هکرها بعد از نفوذ با browse کردن در دایرکتوریهای سایت شما و گشتن به دنبال فولدرها یا فایلها با پرمیشن مطلوب کارشونو تکمیل میکنن و البته خیلی ها از اول از روش دید زدن فولدرهایی که حاوی موتور اسکریپت ها و اطلاعات با ارزشی هستن مثلا فایل config رو در بردارن به سایت نفوذ میکنن برای جلوگیری از این کار، سه راه وجود دارد:
1- ساخت یک صفحه index و قرار دادن آن در پوشه مورد نظر
2- استفاده از فایل .htaccess
3- استفاده از فایلهای HEADER و README
از آنجا که بحث ما در مورد فایل .htaccess می باشد، راه دوم را مورد بررسی قرار میدهیم. برای این کار می بایست از فرمان IndexIgnore استفاده نمایید:
IndexIgnore *
این کد از لیست شدن تمامی فایلهای پوشه مورد نظر، جلوگیری میکند. حال فرض کنید که درون پوشه ای انواع و اقسام فایلها نظیر فایلهای متنی و تصاویر دارید و می خواهید که فقط از لیست شدن تصاویر جلوگیری شود. بدینمنظور میتوانید از کد زیر استفاده کنید:
IndexIgnore *.gif *.jpg
در واقع این کد از لیست شدن تمامی فایلهایی که به .gif و .jpg ختم میشوند، جلوگیری میکند.
استفاده از رمز عبور برای بخش های مختلف سایت
ابتدا فایلی به این نام ایجاد کنید .htpasswd این فایل هم خصوصیاتی چون فایل .htaccess دارد این فایل حاوی نام های کاربری و کلمه های عبور . که بصورت زیر انها را تعیین می کنید
Username:password Username:password Username:password
حواستان باشد که هر کدام در یک خط باشند و همچنین به اشتباه فضای space در اخر خط ها وارد نکنید . در ضمن برای نام های کاربری که مشکلی پیش نمی اید اما برای کلمه های عبور برای افزایش امنیت باید از نرم افزارهایی که انها را به کد تبدیل می کنند استفاده کنید . می توانیید از این سایت استفاده نمایید
یادتان باشد که این فایل را در فولدر های بالایی www یا public_html بگذارید یعنی در فولدر main
حال برای انکه مشخص کنید کدام بخش از سایت یا کدام دایرکتوری شامل رمز عبور بشوند باید به این صورت عمل کنید در فایل htaccess خطوط زیر را اضافه
AuthUserFile /pathto/.htpasswd AuthType Basic AuthName "Secret Place" require valid-user
دستورات فوق باعث می شوند که در صورت نادرستی و عدم تطابق کلمه عبور با انچه که در فایل مربوطه ثبت شده از ورود کاربر جلوگیری کند . بنابراین اگر کاربری خواست وارد دایرکتوری شود که بدینوسیله محافظت می شد یک منوی پاپ آپ ظاهر میشود که نام کاربری و رمز عبور را میطلبد .
اگر خواستید در یک فولدر تنها از یک فایل محافظت کنید و عملیات پسورد گذاری تنها برروی یک فایل انجام شود دستورات زیر را در فایل وارد کنید .
<files "filename.cgi"> AuthUserFile /home/pathto/.htpasswd AuthType Basic AuthName "Secret Place" require valid-user </files>
عوض کردن صفحه پیشفرض وب سایت
به طور کلی، تمامی وب سرورها از روی قانون خاصی صفحات وب را نشان می دهند. برای آنکه صفحات وب تنها به یک پسوند منحصربه فرد نظیر .htm ختم نمی شوند و انواع واقسام پسوندهای مختلف، برای صفحات وب وجود دارد.
حال فرض کنید که وب سرور شما، ابتدا فایل index.html را نشان می دهد و در صورت نبود آن، فایلهای index.htm، index.php و … شما می خواهید این روند را تغییر داده و فایل index.php را در اولویت قرار دهید. بدین منظور می بایست از دستور DirectoryIndex استفاده نمایید:
DirectoryIndex index.php index.cgi index.pl default.htm
کد بالا ابتدا به دنبال فایل index.php گشته و در صورت پیدا کردن آن، آن را به عنوان صفحه وب پیشفرض نمایش می دهد. اگر فایل index.php پیدا نشد، سرور به دنبال فایل بعدی که index.cgi می باشد گشته و همین روال، ادامه پیدا میکند. دقت داشته باشید که شما حتما مجبور به استفاده از index برای نام فایل نیستید و از هر اسم دیگری نیز، میتوانید استفاده کنید.
DefaultCharset
بسیاری از مشکلات دوستان نمایش اینکودینگ صفحات اینترنتی هست که با دستور زیر میتونید آپاچی رو مقید کنید تا Charset موردنظر شما رو ایجاد کنه
AddDefaultCharset utf-8
در این مطلب سعی شد تعدادی از موارد کاربردی httacces بیان شود برای مطالعه بیشتر می توانید از این سایت بازدید نمایید.