.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 بیان شود برای مطالعه بیشتر می توانید از این سایت بازدید نمایید.