Hyper Text Acces یا httacces چیست و چگونه می توانیم از آن استفاده کنیم ؟

تاریخ انتشار:

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

دیدگاه خود را ارسال کنید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *