0

ترفندهای .htaccess – بخش دوم

 
amirpetrucci0261
amirpetrucci0261
کاربر طلایی1
تاریخ عضویت : تیر 1388 
تعداد پست ها : 27726
محل سکونت : http://zoomstar.ir/

ترفندهای .htaccess – بخش دوم

 

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

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


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

# custom error documents
ErrorDocument 401 /err/401.php
ErrorDocument 403 /err/403.php
ErrorDocument 404 /err/404.php
ErrorDocument 500 /err/500.php

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


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

# quick custom error "document"..
ErrorDocument 404 "<html><head><title>NO!</title></head><body><h2><tt>There is nothing here.. go away quickly!</tt></h2></body></html>

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

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

AuthType Basic
AuthName "restricted area"
AuthUserFile /usr/local/var/www/html/.htpasses
require valid-user

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

AuthType Basic
AuthName "restricted area"
AuthUserFile /usr/local/var/www/html/.htpasses
<Limit POST>
require valid-user
</Limit>

توجه داشته باشید که شما برای ایجاد کلمه عبور برای یک کاربر ( در اینجا به نام jimmy )میتوانید از دستور زیر استفاده نمایید:

htpasswd -c /usr/local/var/www/html/.htpasses jimmy

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

htpasswd -c c:/unix/usr/local/Apache2/conf/.htpasses jimmy

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

htpasswd -c ../conf/.htpasses jimmy

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

the remote_user variable is now available..
RewriteEngine on
RewriteCond %{remote_user} !^$ [nc]
RewriteRule ^(.*)$ /users/%{remote_user}/$1

پنج شنبه 11 آذر 1389  1:55 AM
تشکرات از این پست
دسترسی سریع به انجمن ها