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

چگونه فایل 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 است.  مشخص کردن کد وضعیت به مرورگر اجازه می دهد بداند که صفحه شما به موقعیت جدیدی هدایت می شود. اگر این پارامتر را خالی بگذارید، کد پیش فرض ۳۰۲ را اتخاذ می کند که نشان می دهد ریدایرکت شما موقتی است.  استفاده از کد ۳۰۱ نشان می دهد که صفحه درخواست شده به طور دائمی به موقعیت مدنظر انتقال یافته است. پارامتر بعدی  مسیر Unix برای فایل است که در آدرس درخواست شده است. این پارامتر یک آدرس نیست.  مسیر شما باید موقعیت فایل .htaccess باشد که پیکربندی ریدایرکت در آن تنظیم شده است. پارامتر نهایی نشان دهنده جایی است که بازدیدکننده به آن ریدایرکت می شود. در این مورد، ترافیک به /test2/index.html هدایت می شود.

تنظیم صفحه خطای ۴۰۴:

زمانی که بازدیدکننده تلاش می کند صفحه یا منبعی که وجود ندارد را ببیند، سرور با کد خطای ۴۰۴ به او پاسخ می دهد. در چنین شرایطی کاربر باید بازخوردی دریافت کند  و به او گفته شود که صفحه درخواستی وی در دسترس نیست یا اصلا وجود ندارد. آپاچی به طور پیش فرض، صفحه خطا را در این شرایط نشان می دهد. با اینحال بیشتر سایت ها تلاش می کنند صفحه خطای سفارشی شده برای کاربران خود ایجاد کنند.  شما می توانید از تنظیمات .htaccess استفاده کنید.  این کار تمامی درخواست های انجام شده برای سندی که موجود نیست را به صفحه ای در دایرکتوری روت پروژه به نام ۴۰۴٫html هدایت می کند. فایل .htaccess را باز کنید و دستور زیر را بدان اضافه نمایید:

/var/www/html/example.com/public_html/.htaccess

ErrorDocument 404 /404.html

فایل ۴۰۴٫html را ایجاد کنید:

/var/www/html/example.com/public_html/404.html

<!doctype html>

<html>

 <body>

   ۴۰۴ Error: Page not found

 </body>

</html>

در مرورگر خود صفحه ای که وجود ندارد را تایپ کنید. در این مثال صفحه www.example.com/doesnotexist.html وجود ندارد. باید پیام خطای ۴۰۴ را مشاهده نمایید.

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*