منبع اصلی نوشتار زیر در این لینک قرار دارد

کار با الفبای htaccess در آپاچی (پارت2)

به نام خدا با بخش دوم از آموزش کار با htaccess در خدمتتون هستم.

نمایش محتوای یک پوشه به صورت خودکار

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

انجام این کار در صورتی ممکن است که فایل mod_autoindex.c روی وب سرور شما نصب شده باشد. در این صورت میتوانید با استفاده از کد زیر قابلیت مشاهده کامل محتویات یک پوشه بر روی وب سرور را به کارارن بدهید:

 

<IfModule mod_autoindex.c>
IndexOptions FancyIndexing
</ifModule>

البته میتوانید این کار را مشخص کردن برخی پارامترها نیز صورت دهید. مثلا تعیین اندازه آیکونها و طول نام آیتم ها و …

 

<IfModule mod_autoindex.c>
IndexOptions FancyIndexing IconHeight=16 IconWidth=16
</ifModule>

مثلا :

 

NameWidth=30
DescriptionWidth=30

ایندکس فایلهای سفارشی برای پوشه ها

 در این جا بد نیست به این نکته اشاره کنیم که .htaccess مکانی است که شما میتوانید در آن مشخص کنید که از چه فایلهایی میخواهید بعنوان ایندکس برای پوشه های خود استفاده نمایید.

مثلا زمانی که کاربری آدرس www.yoursite.com/foo/ را وارد میکند، آپاچی به طور پیش فرض صفحه www.yoursite.com/foo/index.php را بارگذاری خواهد کرد.

به کمک تکنیکی که در اینجا خواهیم آموخت شما میتوانید فایل یا فایلهای دیگری را بعنوان ایندکس مشخص کنید تا php آنها را به ترتیب اولیت نمایش دهد. برای این کار از کد زیر استفاده میشود:

DirectoryIndex index.html index.php index.htm

دقت کنید که در این مثال وب سرور آپاچی اول بدنبال فایل index.html میگردد. در صروتی که یافت شود آن را نمایش خواهد داد اما در صورتی که این فایل را پیدا نکند بدنبال فایلهای دیگر خواهد رفت.

حفظ پهنا باند به کمک .htaccess

در صورتی که شما برای میزان پهنا باند وب سایت خود هزینه میپردازید ( که قطعا چنین است!)، این کد کوچک زیر در فایل .htaccess میتواند در نگهداری از پول نقد شما به کمکتان بیاید!

<ifModule mod_php4.c>
php_value zlib.output_compression 16386
</ifModule>

آنچه که این کد انجام میدهد این است که قابلیت ذاتی PHP را در فشرده سازی zlip فعال میکند. این کار موجب میشود صفحاتی که قرار است به سمت کلاینت ارسال گردند ابتدا فشرده سازی شده و سپس ارسال میشوند و در سوی کلاینت، مرورگر آنها را از حالت فشرده خارج کرده و نمایش میدهد. بنابراین حجم داده های کمتری منتقل شده است و این خود در حفظ پهنا باند بسیار موثر است.

مخفی کردن فایلها

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

اغلب سرورها در پیکربندی اصلی خود دارای چیزی شبیه به این هستند:

 

<Files ~ "^.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>

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

البته این نکته را هم در یاد داشته باشید که نقطه در اول نام یک فایل باعث میگردد تا آن فایل در یک ایندکس نمایش نیابد.

به مثال زیر دقت کنید:

 

<Files ~ "^.*.([Ll][Oo][Gg])">
Order allow,deny
Deny from all
Satisfy All
</Files>

 

 

این مثال به سرور میفهماند که فایلهای *.log را در نظر نگیرد. البته شما میتوانید چندین نام فایل را مشخص کنید به شرطی که آنها را با کاراکتر ” | ” از همدیگر جدا نمایید. نکته این که تعداد بلوکهای کد بالا در یک فایل .htaccess میتواند بیشتر از یک مورد باشد. بناربراین الزامی به نوشتن همه فایلها در یک بلوک کد ندارید.

مثلا میتوانید این بلوکهای کد را در نظر بگیرید:

# deny all .htaccess, .DS_Store $hî†é and ._* (resource fork) files
<Files ~ "^.([Hh][Tt]|[Dd][Ss]_[Ss]|[_])">
Order allow,deny
Deny from all
Satisfy All
</Files>
# deny access to all .log and .comment files
<Files ~ "^.*.([Ll][Oo][Gg]|[cC][oO][mM][mM][eE][nN][tT])">
Order allow,deny
Deny from all
Satisfy All
</Files>

این کدها همه فایلهای ._*resource و .DS و *.log و *.comment و در نهایت .ht* را مخفی میکنند.

 

استفاده از <FilesMatch>

امروزه استفاده از <FilesMatch> بر استفاده از <Files> ترجیح داده میشود چرا که شما میتوانید به کمک آن از عبارات منظم ( Regular expressions ) نیز در آن استفاده نمایید و کد بسیار زیبا و خواناتری را فراهم نمایید. مثلا به کد زیر دقت نمایید که برای فایلهای استایل که توسط PHP تولید میشوند نوشته شده است:

 

# handler for phpsuexec..
<FilesMatch ".(css|style)$">
SetHandler application/x-httpd-php
</FilesMatch>

پس از نوشتن این کد هر فایلی که با عبارت منظم مذکور در کد همخوانی داشته باشد – که در اینجا فایلهای *.css و *.style هستند – اکنون توسط php مدیریت میشوند، به جای اینکه تنها توسط آپاچی درنظر گرفته شوند. شما میتوانید کلیه کدهایی که در آنها از <Files> استفاده کرده اید را با <FilesMatch> تغییر دهید و از مزایای آن بهره‌ مند گردید.



برچسب ها : ,