مدیریت سرورمقالات وب
چگونه فایل htaccess را بر روی آپاچی تنظیم کنیم؟

در این مقاله قصد داریم نحوه راه اندازی و پیکربندی فایل htaccess را برای آپاچی بیان کنیم. این راهنما موضوعات مرتبط با مدیریت ساختار فایل های سایت، ریدایرکت ها، محدودیت های مرتبط با آی پی آدرس را پوشش خواهد داد. پس همراه وب ایده باشید.
قبل از آغاز کار موارد زیر را مدنظر داشته باشید:
در این راهنما هر جایی که لازم بود از Sudo استفاده خواهیم کرد. بنابراین باید یک کاربر استاندارد بر روی سرور برای خود ایجاد کنید،دسترسی SSH را امن تر نمایید و سرویس های غیر ضروری شبکه را حذف کنید.
به کمک دستور زیر سیستم خود را به روزرسانی کنید:
sudo apt-get update && sudo apt-get upgrade
نکته: در این راهنما هر موردی که با عبارت testuser آغاز شده بود را با اکانت کاربری خود جایگزین کنید. هر example.com را با ای پی یا آدرس خود عوض نمایید.
فایل .htaccess چیست؟
همانطور که می دانید.htaccess یک فایل پیکربندی برای وب سرور آپاچی است. این یک ابزار بسیار قدرتمند است و می توان از آن برای اصلاح پیکربندی آپاچی بدون نیاز به ویرایش فایل های پیکربندی آپاچی استفاده کرد. بخش زیر نحوه ایجاد این فایل پیکربندی و استفاده از آن برای محدود کردن فهرست دایرکتوری ها و آی پی آدرس ها را نشان می دهد.
فعال کردن.htaccess :
به طور پیش فرض این فایل در دسترس شما قرار ندارد. برای اینکه بتوانید این فایل را فعال سازید باید فایل پیکربندی را ویرایش نمایید. از یک نرم افزار ویرایشگر متن برای باز کردن فایل پیکربندی استفاده کنید:
sudo nano /etc/apache2/sites-available/example.com.conf
بعد از بلاک ویرچوال هاست، موارد زیر را اضافه کنید:
/etc/apache2/sites-available/example.com.conf
…. </VirtualHost> <Directory /var/www/html/example.com/public_html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> |
فایل را ذخیره کنید و آپاچی را ریستارت نمایید:
sudo service apache2 restart
محدود کردن فهرست دایرکتوری ها:
به طور پیش فرض، هر فردی که از سایت شما بازدید می کند می تواند دایرکتوری و ساختار فایل ها را مشاهده نماید و به فایل های موجود در وب سرور دسترسی داشته باشد. بهتر است دسترسی به این دایرکتوری ها را محدود سازید تا بازدیدکننده نتواند آن ها را مشاهده کند. یکی از روش های موجود برای محدود کردن فهرست دایرکتوری ها استفاده از فایل .htaccess است.
ایجاد فایل .htaccess
سیستم های CMS همچون وردپرس این فایل را به طور پیش فرض ایجاد می کنند. در این بخش فرض می کنیم که فایل .htaccess وجود ندارد و شما مجبور هستید آن را به طور دستی ایجاد نمایید. به دایرکتوری روت سایت خود بروید:
cd /var/www/html/example.com/public_html
فایل .htaccess را ایجاد کنید:
/var/www/html/example.com/public_html/.htaccess
Options -Indexes |
حالا اگر به سایت خود بروید، پیام Forbidden را دریافت خواهید کرد. باید فایل ها یا دایرکتوری هایی که می خواهید ببینید را خودتان مشخص کنید.
محدود کردن آی پی:
فرض کنید نمی خواهید آی پی خاصی به سایت شما دسترسی داشته باشد. این موضوع زمانی مفید خواهد بود که بخواهید بازدیدکننده خاصی را از بازدید سایت خود باز دارید. می توانید ای پی خاصی را از دسترسی به بخش های خاصی از سایت محدود نمایید.
نکته مهم: به خاطر داشته باشید که اگر فایل .htaccess جداگانه ای برای ساب دایرکتوری ها ایجاد نشده باشد این بخش تنظیمات خود را از فایل .htaccess موجود در دایرکتوری والد خود به ارث می برد.
مسدود کردن آی پی آدرس:
فایل .htaccess را در دایرکتوری که آپاچی میزبان سایت شما خواهد بود، ایجاد کرده یا ویرایش کنید:
cd /var/www/html/example.com/public_html/
sudo nano .htaccess
خط Options -Indexes را از بخش قبلی پاک کنید و خط زیر را برای مسدود کردن آی پی آدرس هدف اضافه کنید:
/var/www/html/example.com/public_html
order allow,deny # This will deny the IP 172.15.23.9 deny from 172.15.23.9 # This will deny all IP’s from 172.15.23.0 through 172.15.23.255 deny from 172.15.23 |
اجازه دادن به آی پی آدرس خاص:
فایل .htaccess قرار گرفته در دایرکتوری وب که می خواهید تنظیمات بر روی آن اعمال شود را ایجاد کرده یا ویرایش کنید.
خط زیر را اضافه کنید تا آی پی آدرس خاصی را به جز آی پی آدرس بیان شده در دستور از گشت و گذار در سایت محدود سازد.
/var/www/html/example.com/public_html
order deny,allow # Denies all IP’s Deny from all # This will allow the IP 172.15.23.9 allow from 172.15.23.9 # This will allow all IP’s from 172.15.23.0 through 172.15.23.255 allow from 172.15.23 |
مدیریت ریدایرکت ها:
شما می توانید به کمک فایل .htaccess، ترافیک ها را نیز ریدایرکت کنید. در ادامه، فایل .htaccess برای دایرکتوری روت سایت به روزرسانی خواهد شد. فرض کنید می خواهید زمانی که بازدیدکننده از آدرس http://example.com/main.html بازدید می کند به آدرس http://example.com/test2/index.html هدایت شود.
فایل HTML تست را برای ریدایرکت ایجاد کنید:
mkdir test1
sudo touch test1/index.html
محتوایی به فایل تست خود اضافه کنید:
/var/www/html/example.com/public_html/test1/index.html
<!doctype html> <html> <body> This is the html file in test1. </body> </html> |
حالا فایل .htaccess را در دایرکتوری روت خود باز کنید. تمامی پیکربندی ها را در این فایل پاک کنید و خط زیر را بدان بیفزایید:
/var/www/html/example.com/public_html/.htaccess
Redirect 301 /main.html /test1/index.html |
اولین پارامتر بعد از عبارت Redirect ، کد وضعیت HTTP است. مشخص کردن کد وضعیت به مرورگر اجازه می دهد بداند که صفحه شما به موقعیت جدیدی هدایت می شود. اگر این پارامتر را خالی بگذارید، کد پیش فرض 302 را اتخاذ می کند که نشان می دهد ریدایرکت شما موقتی است. استفاده از کد 301 نشان می دهد که صفحه درخواست شده به طور دائمی به موقعیت مدنظر انتقال یافته است. پارامتر بعدی مسیر Unix برای فایل است که در آدرس درخواست شده است. این پارامتر یک آدرس نیست. مسیر شما باید موقعیت فایل .htaccess باشد که پیکربندی ریدایرکت در آن تنظیم شده است. پارامتر نهایی نشان دهنده جایی است که بازدیدکننده به آن ریدایرکت می شود. در این مورد، ترافیک به /test2/index.html هدایت می شود.
تنظیم صفحه خطای 404:
زمانی که بازدیدکننده تلاش می کند صفحه یا منبعی که وجود ندارد را ببیند، سرور با کد خطای 404 به او پاسخ می دهد. در چنین شرایطی کاربر باید بازخوردی دریافت کند و به او گفته شود که صفحه درخواستی وی در دسترس نیست یا اصلا وجود ندارد. آپاچی به طور پیش فرض، صفحه خطا را در این شرایط نشان می دهد. با اینحال بیشتر سایت ها تلاش می کنند صفحه خطای سفارشی شده برای کاربران خود ایجاد کنند. شما می توانید از تنظیمات .htaccess استفاده کنید. این کار تمامی درخواست های انجام شده برای سندی که موجود نیست را به صفحه ای در دایرکتوری روت پروژه به نام 404.html هدایت می کند. فایل .htaccess را باز کنید و دستور زیر را بدان اضافه نمایید:
/var/www/html/example.com/public_html/.htaccess
ErrorDocument 404 /404.html |
فایل 404.html را ایجاد کنید:
/var/www/html/example.com/public_html/404.html
<!doctype html> <html> <body> 404 Error: Page not found </body> </html> |
در مرورگر خود صفحه ای که وجود ندارد را تایپ کنید. در این مثال صفحه www.example.com/doesnotexist.html وجود ندارد. باید پیام خطای 404 را مشاهده نمایید.